局部变量
如果名称绑定在函数内部,则默认情况下只能在函数内访问:
def foo():
a = 5
print(a) # ok
print(a) # NameError: name 'a' is not defined
控制流构造对范围没有影响(except
除外),但是访问尚未分配的变量是一个错误:
def foo():
if True:
a = 5
print(a) # ok
b = 3
def bar():
if False:
b = 5
print(b) # UnboundLocalError: local variable 'b' referenced before assignment
常见的绑定操作是赋值,for
循环和增强赋值,例如 a += 5