蟒蛇keyworded lambda函数

问题描述:

下面是一个简单的λ表达蟒蛇keyworded lambda函数

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

简单我的拉姆达对象存储到一个变量使用var来完成数学。

  1. 我的问题:

    如何创建函数的使用拉姆达的作为keyworded参数,并使用它们正确瓶坯某些任务

在这段代码中,我得到类型错误:“STR”对象不可回收

def test1(**kwargs): 

     for fart in kwargs: 

      print(fart) #output is == key 
      fart(4) #fart(4)==TypeError 

    test1(key=lambda x: x*x) 
+1

为什么你的元素叫屁?大声笑 –

+0

我猜OP好几个小时都在努力做这个工作。我会自己使用更严格的变量名:) –

+0

我怀疑他必须在该变量中保存超过4GB的数据后包含'r' – inspectorG4dget

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

{'key': lambda x: x*x} 

所以,当你遍历dict,你真的在​​键盘上,这在kwargs的情况下,是字符串迭代(和字符串不是调用)。

如果你真的想要得到的拉姆达,那么你应该在kwargs在这个钥匙来访问值:

for fart in kwargs: 
    print(fart) 
    print(kwargs[fart[](4)) 

当然,还有一个更简单的方法来做到这一点:

for fart, shart in kwargs.items(): 
    print(fart) 
    print(shart(4)) 

kwargs是一本字典。迭代字典会为您提供关键值。

WHN你重复,只是使用items()values()如果你希望lambda函数的所有键:

for fart in kwargs: 
    print(kwargs[fart](4)) 

或值:

for fart in kwargs.values(): 
    print(fart(4)) 

更合理,你需要打电话给你拉姆达什么就是用钥匙key

def test1(**kwargs): 
    print(kwargs["key"](4)) 

test1(key=lambda x: x*x) 

这里打印16