Being more explicit and less hacky can well be combined with staying true to functional style:
from functools import partial mul = lambda x, y: x*y # could use int.__mul__, too multipliers = [partial(mul, n) for n in range(5)]
It would have a big ugly 'return' in it and be a few characters longer, but it would work the same, so I don't see what lambda brings to it.
Being more explicit and less hacky can well be combined with staying true to functional style:
It does the closure-capturing of n for you.