gpt4 book ai didi

python - 如何修改 lambda 函数中的变量?

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:05 27 4
gpt4 key购买 nike

我正在尝试做这样的事情:

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

最佳答案

只有 expressions允许出现在 lambda 函数的主体中; a += b 是一个 augmented assignment statement ,在编译时,这将导致 SyntaxError,因为语法不允许这样做。

您可以将其更改为简单地返回加法:

lambda a,b: a+b

然后继续将调用它的结果适本地设置为a:

a = y(aVariable,bVariable)

您当然可以使用用于该操作的函数。虽然您可以直接执行 lambda a, b: a.__iadd__(b),但这很笨拙,并且像这样使用双下划线并不是最佳做法。相反,您应该使用 operator 模块中的适当操作。

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

from operator import iadd

然后,重新定义传递给 myFunclambda 以使用 iadd:

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

将这些全部加在一起,同时还在 myFuncmain 中添加适当的 return:

from operator import iadd

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

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

main 被调用时产生 ab

关于python - 如何修改 lambda 函数中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41036581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com