pin_drop当前位置:知识文库 ❯ 图文
Python全局变量 - 变量作用域与global关键字
一、概述
全局变量是在函数外部定义的变量,可以在整个模块中访问。函数内部可以读取全局变量,但不能直接修改(除非使用global关键字)。
二、语法
代码示例
global_var = value三、读取全局变量
代码示例
message = "Hello, World!"
def greet():
print(message)
greet()输出:
代码示例
Hello, World!四、函数内不能直接修改全局变量
代码示例
count = 0
def increment():
count = count + 1
increment()运行结果:
代码示例
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in increment
UnboundLocalError: local variable 'count' referenced before assignment
错误原因:在函数内部对count赋值时,Python会认为这是一个新的局部变量,但在赋值前引用了它。
五、函数内同名变量遮蔽全局变量
代码示例
x = 10
def func():
x = 20
print(f"函数内: x = {x}")
func()
print(f"函数外: x = {x}")输出:
代码示例
函数内: x = 20
函数外: x = 10六、注意事项
注意:全局变量在函数外部定义。函数内可以读取全局变量。函数内直接赋值会创建同名局部变量。修改全局变量需要
global关键字。
七、小结
-
定义位置:全局变量在函数外部定义
-
读取权限:函数内可以读取全局变量
-
变量遮蔽:函数内直接赋值会创建同名局部变量
-
修改方法:修改全局变量需要global关键字
八、练习题
练习1
编写函数 update_counter() 修改全局计数器
练习2
编写函数 show_config() 读取全局配置字典
常见问题
为什么函数内不能直接修改全局变量?
Python 规定在函数内对变量赋值时,会默认创建一个新的局部变量。如果要修改全局变量,需要使用 global 关键字明确声明。
函数内定义同名变量会发生什么?
函数内定义同名变量会"遮蔽"全局变量,在函数内部访问的是局部变量,函数外部仍然是全局变量的值。
全局变量和局部变量哪个优先级高?
在函数内部,局部变量的优先级高于全局变量。如果存在同名变量,函数内部会优先使用局部变量。
小贴士
虽然可以通过 global 关键字修改全局变量,但应尽量避免这样做。过度使用全局变量会使代码难以维护和调试。推荐的做法是将需要共享的数据作为参数传递给函数,或者使用类和对象来管理状态。
本文涉及AI创作
内容由AI创作,请仔细甄别