On Monday, November 30, 2015 at 12:37:52 PM UTC-5, Terry Reedy wrote: > On 11/30/2015 11:44 AM, fl wrote: > > > I come across the following code snippet. > > > for i in range(10): > > def callback(): > > print "clicked button", i > > UI.Button("button %s" % i, callback) > > > http://effbot.org/zone/default-values.htm > > Note that the above is an intentional example of common buggy code. It > is followed by a version that works, with 'i=i' added to the callback > header. > > -- > Terry Jan Reedy
With the following code, there is no bug as the original author said. class buibutton(): print 'sd' def __nonzero__(self): return False def Button(self, ii, callbackk): callbackk() return for i in range(10): def callback(): print "clicked button", i UI.Button("button %s" % i, callback) only to find that all callbacks print the same value (most likely 9, in this case). Why does it have no bug? -- https://mail.python.org/mailman/listinfo/python-list