






















解释:
number = 10 # 定义全局变量 def test_one(): print(number) # 在函数内部访问全局变量 number=number+1 # 在函数内部直接修改全局变量【加上这句会报错】 test_one() print(number) # 在函数外部访问全局变量
这是 Python 中全局变量与局部变量作用域的知识点。
先看你的代码:
number = 10 # 全局变量
def test_one():
print(number) # 访问全局变量 ✅ 没问题
number += 1 # 修改全局变量 ❌ 报错!
test_one()
print(number)
运行后会报错:
UnboundLocalError: local variable 'number' referenced before assignment
Python 有一条铁律:
在函数内部,只要对变量进行赋值操作,Python 就会把这个变量当作局部变量,而不是全局变量。
过程是这样的:
number += 1number 是局部变量print(number)
number 还没被创建print(number):Python 找不到局部变量,会向上找全局变量,正常运行。number = ... 或 number += ...:如果你想在函数内部修改全局变量,必须加 global:
number = 10
def test_one():
global number # 声明:我要用全局变量 number
print(number)
number += 1 # 现在可以修改了 ✅
test_one()
print(number) # 11
globalglobal 声明此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。