【发布时间】:2026-02-10 18:10:01
【问题描述】:
据我了解下面代码中的全局语句,它应该防止 function_two 重新绑定名称 test,而是修改 function_one 中的 test。但是,我得到 NameError: global name 'test' is not defined。
def function_one():
test = 1
def function_two():
global test
test += 1
function_two()
print test
function_one()
我看过,但找不到这样的例子。我错过了什么?
【问题讨论】:
-
你误会了。
global与nonlocal的含义不同(仅限 Python 3)。global真正的意思是 global,例如不在函数中。testinfunction_two期望有一个全局名称test;function_one()中的本地名称test被忽略。 -
您使用的是 Python 2 还是 Python 3?大概是 Python 2,因为您使用
print作为语句。 -
@name_no:不,那行不通。你会得到一个
UnboundLocalError: local variable 'test' referenced before assignment异常。 -
是的,它是没有目的的代码。我只是想要一个简单的例子来证明我对全局语句的困惑。答案很有启发性。
标签: python python-2.7 scope nested global