【发布时间】:2017-10-04 08:18:25
【问题描述】:
我试图理解 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() 中运行。
但很明显,我弄错了。实际发生了什么?
【问题讨论】:
-
虽然它与此问题没有直接相关,但我怀疑您可能会发现这篇文章对您有所帮助:Facts and myths about Python names and values,由 SO 资深人士 Ned Batchelder 撰写。
标签: python python-3.x function scope