假设我有一个方法foo:
def foo(string):
def bar1():
if '1' in string:
string = string[2:]
else:
bar2()
def bar2():
if ('2' in string):
string.insert(5, '1')
else:
string.insert(5, '2')
bar1()
不幸的是,这会返回一个错误,指出在分配之前引用了局部变量string
。我认为该字符串将继承自foo
的范围。我错了吗?请注意,变量string
实际上是一个列表(抱歉混淆)。
答案 0 :(得分:1)
对变量的赋值在本地范围内创建一个新变量,除非使用nonlocal
关键字(仅限Python 3):