def mul():
return [lambda x : i*x for i in range(4)]
when i execute it i get this
[<function __main__.mul.<locals>.<listcomp>.<lambda>>,
<function __main__.mul.<locals>.<listcomp>.<lambda>>,
<function __main__.mul.<locals>.<listcomp>.<lambda>>,
<function __main__.mul.<locals>.<listcomp>.<lambda>>]
and i am using that function as like this
print([f(3) for f in mul()])
[9, 9, 9, 9]
print([f(5) for f in mul()])
[15, 15, 15, 15]
what is happening inside of mul() and inside of print and what here f refers to?