python keyworded lambda函数

时间:2017-04-20 19:32:09

标签: python object lambda typeerror keyword

这是一个简单的lambda express

var= lambda x: x*x
print(var(4))

simple我将lambda对象存储到变量中使用var来完成数学运算。

  1. 我的问题:

    如何创建使用lambda作为关键参数的函数并正确使用它们来执行某些任务

  2. 在这段代码中我得到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)
    

2 个答案:

答案 0 :(得分:2)

您收到此错误是因为kwargsdict。在你的情况下,这个字典看起来像这样:

{'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