这是一个简单的lambda express
var= lambda x: x*x
print(var(4))
simple我将lambda对象存储到变量中使用var来完成数学运算。
我的问题:
如何创建使用lambda作为关键参数的函数并正确使用它们来执行某些任务
在这段代码中我得到TypeError:' str'对象不可调用
def test1(**kwargs):
for fart in kwargs:
print(fart) #output is == key
fart(4) #fart(4)==TypeError
test1(key=lambda x: x*x)
答案 0 :(得分:2)
您收到此错误是因为kwargs
是dict
。在你的情况下,这个字典看起来像这样:
{'key': lambda x: x*x}
因此,当您遍历dict
时,您实际上是在迭代密钥,在kwargs
的情况下,是字符串(并且字符串不可调用)。
如果您真的想要获得lambda,那么您应该在该密钥的kwargs
内访问该值:
for fart in kwargs:
print(fart)
print(kwargs[fart[](4))
当然,有一种更简单的方法:
for fart, shart in kwargs.items():
print(fart)
print(shart(4))
答案 1 :(得分:1)
kwargs
是一本字典。迭代字典可以为您提供关键值。
当你迭代时,如果你期望所有键的lambda函数,只需使用items()
或values()
:
for fart in kwargs:
print(kwargs[fart](4))
或关于价值观:
for fart in kwargs.values():
print(fart(4))
更合理的是,你需要调用lambda的是使用密钥key
:
def test1(**kwargs):
print(kwargs["key"](4))
test1(key=lambda x: x*x)
这里打印16