是的,在函数内部只要对变量有赋值操作,Python 就会把它当作局部变量,除非你用 global 或 nonlocal 显式声明。
x = 10
def foo():
x = 5 # 这是新的局部变量 x,和外部的 x=10 无关
foo()
print(x) # 输出 10,全局 x 没被改
x = 10
def bar():
print(x) # 报错!UnboundLocalError: local variable 'x' referenced before assignment
x = 5 # 因为有赋值,Python 把 x 当作局部变量