Python 动态创建的方法参数

Python 动态创建的方法参数,python,methods,Python,Methods,我正在使用迭代器变量I在循环中创建一系列按钮。在这个循环中,我定义了一个方法click() i=0 而(i

我正在使用迭代器变量
I
在循环中创建一系列按钮。在这个循环中,我定义了一个方法
click()

i=0
而(i<10):
按钮=按钮()
def click():
无热法(一)
button.onClick=单击
i+=1

问题是
i
似乎总是9(这是有道理的)。我需要
I
来“坚持”为每个方法创建它的迭代。我觉得我不仅错过了一些明显的东西,而且我还问了一个重复的问题。我只是不知道要搜索什么。

在循环中定义的函数中使用默认参数。默认值将在定义函数时保留
i
的值,即使以后重新定义:

for i in range(10): # do you really need to be using a while loop?
    def click(i=i): # use a default argument here, to save the current i value
        anotherMethod(i) # this refers to the argument i, not the loop variable i
    button.onClick = click

在循环中定义的函数中使用默认参数。默认值将在定义函数时保留
i
的值,即使以后重新定义:

for i in range(10): # do you really need to be using a while loop?
    def click(i=i): # use a default argument here, to save the current i value
        anotherMethod(i) # this refers to the argument i, not the loop variable i
    button.onClick = click

button=new button()
无效。此外,问题中的代码会导致无限循环。更重要的是,您没有在任何地方使用
按钮
变量,这使我认为您实际上是在将按钮放在循环之后的GUI中。您也没有递增
i
。Add
i+=1
i更正了代码,ffr.
button=new button()
无效。此外,问题中的代码会导致无限循环。更重要的是,您没有在任何地方使用
按钮
变量,这使我认为您实际上是在将按钮放在循环之后的GUI中。您也没有递增
i
。添加
i+=1
我更正了代码,ffr。谢谢!我在问题中输入的一小段代码只是用来解释我想要什么的(无可否认,写得很糟糕)。或多或少的伪代码。谢谢!我在问题中输入的一小段代码只是用来解释我想要什么的(无可否认,写得很糟糕)。或多或少的伪代码。