加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何修改lambda函数内的变量?

发布时间:2020-12-20 11:56:14 所属栏目:Python 来源:网络整理
导读:我想做这样的事情: def myFunc(y): aVariable = "a" bVariable = "b" y(aVariable,bVariable)def main(): myFunc(lambda a,b: a+=b) 并期望输出为“ab”. 相反,我收到以下错误: File "stdin",line 7 myFunc(lambda x,y: x += y) ^SyntaxError: invalid syn
我想做这样的事情:

def myFunc(y):
    aVariable = "a"
    bVariable = "b"
    y(aVariable,bVariable)

def main():
    myFunc(lambda a,b: a+=b)

并期望输出为“ab”.

相反,我收到以下错误:

File "<stdin>",line 7
  myFunc(lambda x,y: x += y)
                        ^
SyntaxError: invalid syntax

解决方法

在lambda函数体中只允许 expressions; a = b是 augmented assignment statement,当编译时,这将导致语法错误,因为语法不允许它.

你可以改变它只是返回添加:

lambda a,b: a+b

然后继续设置调用它的结果:

a = y(aVariable,bVariable)

您当然可以使用用于该操作的函数.虽然你可以直接做lambda a,b:a .__ iadd __(b),但这很笨重,使用这样的dunders并不是最好的做法.相反,您应该使用运算符模块中的相应操作.

如果你真的需要,The iadd function from operator允许你绕过这个“限制”.函数调用是表达式,因此,允许它们在lambda函数的主体中使用它们.需要简单导入:

from operator import iadd

然后,重新定义传递给myFunc的lambda以使用iadd:

myFunc(lambda a,b: iadd(a,b))

将所有这些添加在一起,同时在myFunc和main中添加适当的返回:

from operator import iadd

def myFunc(y):
    aVariable = "a"
    bVariable = "b"
    return y(aVariable,bVariable)

def main():
    return myFunc(lambda a,b))

当调用main时导致ab.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读