Python全局变量两种声明方式是否矛盾?二者特点及适用场景分别是什么?
Python两种全局变量相关写法的差异说明
两种写法不存在矛盾,核心逻辑完全不同,特点和适用场景分别如下:
写法1:无global关键字,函数内直接声明同名变量
x = "awesome" z=" code-vi" def myfunc(): x = "fantastic" z=" c-lan." print("Python is " + x+z) myfunc() print("Python is " + x+z)
特点:
- 函数内部直接赋值的
x、z属于函数局部变量,和全局作用域的同名变量是完全独立的两个对象 - 函数内对这两个变量的修改仅在函数调用周期内生效,不会改变外层全局变量的值
- 运行输出为两行不同结果:
第一行:Python is fantastic c-lan.
第二行:Python is awesome code-vi
适用场景:仅需要在函数内部使用同名变量临时存储数据,不需要影响外部变量的场景,这是Python默认的变量作用域规则,能最大程度避免全局变量污染导致的意外bug,日常编码更推荐优先用这种逻辑。
写法2:函数内用global关键字声明变量
x = "awesome" def myfunc(): global x x = "fantastic" myfunc() print("Python is " + x)
特点:
- 用
global声明后,函数内部操作的x直接指向全局作用域的x变量,不会再生成局部变量 - 函数内对
x的赋值会直接修改全局变量的值,函数调用结束后修改仍然生效 - 运行输出为一行:
Python is fantastic
适用场景:只有当你明确需要在函数内部修改全局作用域的变量时才需要使用,注意全局变量会提升代码耦合度、增加调试难度,非必要不建议使用。
内容的提问来源于stack exchange,提问作者IFA-a
相关产品推荐
相关产品推荐

