gpt4 book ai didi

python - 无参数输入的函数可变范围

转载 作者:行者123 更新时间:2023-11-28 19:53:07 25 4
gpt4 key购买 nike

我试图理解 Python (3.x) 中的变量范围,但下面是一个不起作用的代码示例,我不确定为什么。

def function_a(A):
function_b()

def function_b():
print(A)

function_a(1)

这导致 NameError: name 'A' is not defined

所以,我认为它的工作方式是 function_a()function_b() 是确定的。之后,我运行 function_a(),其中 A 被赋值为 1。

所以在 function_a() 的范围内,变量 A=1 存在。

然后调用 function_b() 并打印变量 A 的值。 A 不存在于 function_b() 的范围内。因此我希望它看起来更高一级,这将是 function_a() 的范围,因为 function_b()function_a() 中运行>.

但显然,我弄错了。实际发生了什么?

最佳答案

仅仅因为您在 function_a 中调用了 function_b 并不意味着它会继承 function_a 的范围并且有充分的理由。该函数从定义它的地方而不是它被调用的地方获取范围。

如果您想完成类似闭包的操作,您应该尝试在function_a 中定义function_b

def function_a(A):
def function_b():
print(A)

话虽如此,我在这里并没有真正看到闭包的用例。您最好将变量作为参数传递。这样它会更可重用和测试。

def function_a(A):
function_b(A)

def function_b(A):
print(A)

关于python - 无参数输入的函数可变范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46560140/

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