gpt4 book ai didi

python - 如何使python函数将封闭变量绑定(bind)到值而不是名称

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:58 28 4
gpt4 key购买 nike

在 python 函数中,从封闭范围引用变量是完全合法的。这些变量指的是调用函数时它们拥有的任何值。所以,例如

x = 1 # unused
def foo(y):
return x+y

x=10
print(foo(1)) # prints 11
x=11
print(foo(1)) # prints 12

是否可以将变量 x 卡住为创建时 x 的值?也就是说,我希望 foo 中的 x 绑定(bind)到外部 x 的值而不是它的名称。基本上我想要的行为是

x = 1
def foo(y):
return 1+y # I'd rather not hard code the value of x here

x=10
print(foo(1)) # prints 2
x=11
print(foo(1)) # prints 2

我目前有一个可行的解决方案,但它的可读性不是很好,我认为可能有更好的解决方案(也许是装饰器?)

我的解决方案

x = 1
def wrapper():
local_x = x
def foo(y):
return local_x+y
return foo
foo = wrapper()

x=10
print(foo(1)) # prints 2
x=11
print(foo(1)) # prints 2

最佳答案

您还可以利用默认参数:

x = 1
def foo(y, x=x):
return x + y

x=10
print(foo(1)) # prints 2
x=11
print(foo(1)) # prints 2

关于python - 如何使python函数将封闭变量绑定(bind)到值而不是名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56370341/

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