如何修改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 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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |