函数名作为参数的情况相信大家是见过的,但是今天在工作中遇到了一个传入带参函数的问题,困扰了很久,因此记录下来,也希望能帮助到和我一样不明白这个问题的朋友们。
def usr_login(var_usr_name,var_usr_pwd):
pass
btn_login = tk.Button(window,text=‘Login’,command=usr_login)
如这段代码所示,command参数后面需要传入一个带有参数的函数,这下可是难倒我了。我试着在后面加上参数,如下所示:
def usr_login(var_usr_name,var_usr_pwd):
pass
btn_login = tk.Button(window,text=‘Login’,command=usr_login(var_usr_name,var_usr_pwd))
结果程序运行出来的在我还没有进行操作便执行了(这是tkinter的按钮),听不懂没关系,反正这个方法是有问题的。
后来研究了匿名函数,得以解决:
def usr_login(var_usr_name,var_usr_pwd):
pass
btn_login = tk.Button(window,text=‘Login’,command=lambda:usr_login(var_usr_name,var_usr_pwd))
加上一个lambda便得以解决。下面给一个较完整的案例。
def f1(function):
return function()
def Add(x,y):
return x+y
x=2
y=3
result = f1(lambda : Add(x,y))
print(result)