在Python中从循环创建不同的函数
我正在尝试构建一个tkinter GUI,我遇到了一个Python编程逻辑问题。我的问题如下:我正在以以下方式创建一组对象:在Python中从循环创建不同的函数,python,logic,Python,Logic,我正在尝试构建一个tkinter GUI,我遇到了一个Python编程逻辑问题。我的问题如下:我正在以以下方式创建一组对象: 类应用: 定义createObjects(自): 对象=[] 对于范围(10)内的i: obj=Object(command=lambda:self.myFunction(i)) objects.append(obj) def myFunction(自我,i): 印刷品(一) 在执行每个对象的命令时,我期望得到以下结果: 0 1 2 3 4 5 6 7 8 9 但我得
类应用:
定义createObjects(自):
对象=[]
对于范围(10)内的i:
obj=Object(command=lambda:self.myFunction(i))
objects.append(obj)
def myFunction(自我,i):
印刷品(一)
在执行每个对象的命令时,我期望得到以下结果:
0
1
2
3
4
5
6
7
8
9
但我得到的是:
9
9
9
9
9
9
9
9
9
9
我简化了我的代码,因此任何了解Python逻辑的人都可以帮助我。
提前感谢您的帮助。这个稍加修改的版本可以正常工作 它本质上是可变范围问题。 在您的实现中,函数在运行时查找
i
,此时i
已更新为9。
如果要保留i
的“当前”值,需要使用当前i
定义一个函数,如下所示
类对象:
定义初始化(self,命令):
self.command=命令
班级申请:
定义createObjects(自):
对象=[]
对于范围(10)内的i:
obj=Object(command=self.myFunction(i))
objects.append(obj)
返回对象
def myFunction(自我,i):
返回λ:打印(i)
a=应用程序()
os=a.createObjects()
对于操作系统中的o:
o、 命令()
这个稍加修改的版本正如您所期望的那样工作
它本质上是可变范围问题。
在您的实现中,函数在运行时查找i
,此时i
已更新为9。
如果要保留i
的“当前”值,需要使用当前i
定义一个函数,如下所示
类对象:
定义初始化(self,命令):
self.command=命令
班级申请:
定义createObjects(自):
对象=[]
对于范围(10)内的i:
obj=Object(command=self.myFunction(i))
objects.append(obj)
返回对象
def myFunction(自我,i):
返回λ:打印(i)
a=应用程序()
os=a.createObjects()
对于操作系统中的o:
o、 命令()