Emanuel Barry added the comment:

This is due to the fact that Python evaluates the variable 'n' when the 
function is called, not when it is created. As such, the variable holds the 
latest value for all functions, and they exhibit identical behaviour.

Workaround:

...
f = lambda x, n=n: sin(n*x)
...

And this should work as you expect. More information is available at 
https://docs.python.org/3/faq/programming.html#why-do-lambdas-defined-in-a-loop-with-different-values-all-return-the-same-result

----------
nosy: +ebarry
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed
versions:  -Python 2.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue27738>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to