gpt4 book ai didi

python - 在定义内部带有变量的 lambda 函数时,如何防止在更改变量时函数发生变化?

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:12 25 4
gpt4 key购买 nike

例如:在这段代码中,函数随着变量的变化而变化。我想学习如何在更改变量时防止函数行为发生变化。有没有办法只获取变量的值而不是变量本身?还有什么资源可以让我了解更多关于此类问题的信息?

a = 5
adder = lambda x: x + a
print(adder(5)) # prints 10

a = 50
print(adder(5)) # prints 55

最佳答案

就像由 def 语句定义的等效函数(这是您应该使用的,而不是将 lambda 表达式的结果显式分配给名称)

def adder(x):
return x + a

名称 a 在函数被调用 之前不会被查找。

a == 5 在定义时创建一个专门计算 x + 5 的函数的一种方法是使用默认参数值:

def adder(x, a=a):
return x + a

其中左边的 a 是一个新参数(不打算显式设置),右边的 aa 在当前范围内。

不过,更好的想法是定义一个闭包,这样您的函数就没有可以被滥用的“隐藏”参数。

# This is where a lambda expression does make sense: you want
# a function, but don't need to give it a name.
def make_adder(a):
return lambda x: x + a

adder = make_adder(5)
adder 中的

a 仍然是一个自由变量,但现在它指的是一个范围内的变量,您不会在 之后“外部”访问该范围make_adder 返回。

关于python - 在定义内部带有变量的 lambda 函数时,如何防止在更改变量时函数发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59058885/

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