Why lambda in loop requires default?
gvim
gvimrc at gmail.com
Sat Mar 26 21:46:08 EDT 2016
Given that Python, like Ruby, is an object-oriented language why doesn't
this:
def m():
a = []
for i in range(3): a.append(lambda: i)
return a
b = m()
for n in range(3): print(b[n]()) # => 2 2 2
... work the same as this in Ruby:
def m
a = []
(0..2).each {|i| a << ->(){i}}
a
end
aa = m
(0..2).each {|n| puts aa[n].()} # => 0 1 2
lambda i=i: i
... is needed to make it work in Python. Just wondered why?
gvim
More information about the Python-list
mailing list