【问题标题】:python keyworded lambda function [duplicate]python关键字lambda函数[重复]
【发布时间】:2017-09-17 14:35:11
【问题描述】:

这是一个简单的 lambda 表达式

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

简单我将 lambda 对象存储到一个变量中,使用 var 来完成数学运算。

  1. 我的问题:

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

在这段代码中我得到 TypeError: 'str' object is not callable

    def test1(**kwargs):

        for fart in kwargs:

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

    test1(key=lambda x: x*x)

【问题讨论】:

  • 为什么你的元素叫屁?大声笑
  • 我猜 OP 对试图完成这项工作的几个小时感到恼火。我自己会使用更苛刻的变量名:)
  • 我怀疑他在尝试在该变量中保存超过 4GB 的数据后必须包含 r

标签: python object lambda typeerror keyword


【解决方案1】:

您收到此错误是因为 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))

【讨论】:

    【解决方案2】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-17
      • 2011-12-03
      • 2020-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 2021-09-17
      相关资源
      最近更新 更多