我正在尝试创建一些按钮(带有for),如下所示:
def a(self, name):
print name
users = {"Test":"127.0.0.0", "Test2":"128.0.0.0"}
row = 1
for name in users:
user_button = Tkinter.Button(self.root,
text=name,
command=lambda: self.a(name))
user_button.grid(row = row, column = 0)
row+=1
Run Code Online (Sandbox Code Playgroud)
并且每个按钮都有自己的参数(Test getting Test和Test2得到Test2)但是当我按下按钮时它们都打印"Test2",这意味着它们使用相同的功能和相同的参数.
我怎么解决这个问题?
在Python中,假设我有一个函数f,我想传递一些辅助参数(为简单起见,它只是第一个保持变量的参数).
这两种方式(如果有的话)之间有什么区别?
# Assume secondary_args and secondary_kwargs have been defined
import functools
g1 = functools.partial(f, *secondary_args, **secondary_kwargs)
g2 = lambda x: f(x, *secondary_args, **secondary_kwargs)
Run Code Online (Sandbox Code Playgroud)
例如,在doc页面中partial,有这样的引用:
partial在类中定义的对象的行为类似于静态方法,并且在实例属性查找期间不会转换为绑定方法.
如果用于从提供给类的参数(在构造函数中或稍后通过函数)中创建类方法,lambda方法是否会受此影响?