lambda x=str(item[1][0]): open_url(x)
lambda:open_url(str(item[1][0]))
编程中遇到了问题,改变这一点之后解决了,希望大佬能讲解一下
lambda x=str(item[1][0]): open_url(x)
lambda:open_url(str(item[1][0]))
编程中遇到了问题,改变这一点之后解决了,希望大佬能讲解一下
用例子来说话(Jupyter下运行):
item = [6,5,4,3,2,1,0]
def pri(x):
return x+'||'+x
func = lambda x=str(item[1]): pri(x) # 匿名函数拥有一个默认参数str(item[1]),匿名函数的输出是调用pri函数
print(func) # 表明func是一个函数
print(func()) # 调用这个匿名函数时,如果不给出参数,就使用默认参数str(item[1]),然后调用pri函数
print(func('aaa')) # 调用这个匿名函数时,如果给出参数, 就使用给出的参数, 然后调用pri函数
func
结果:
<function <lambda> at 0x000001891DC296A8>
5||5
aaa||aaa
<function __main__.<lambda>(x='5')>
继续:
func = lambda:pri(str(item[1])) # 匿名函数没有参数,函数的输出已经固定
print(func)
print(func())
print(func('aaa')) # 报错
结果:
<function <lambda> at 0x000001891DC299D8>
5||5
TypeError: <lambda>() takes 0 positional arguments but 1 was given
这个时候我们看第二个func
func
结果:
<function __main__.<lambda>()>
很明显,结果表明,第一个lambda带有一个默认参数,第二个lambda没有参数且输出已经固定
如果帮到你,请采纳以鼓励。