Python中的全局变量和局部变量处理方式
Python 支持对变量进行全局和局部的处理。全局变量是在程序的任意地方都可以访问的变量,而局部变量只在函数内部或某个语句块内部有效。
全局变量
在 Python 中,定义全局变量可以直接在主程序中定义。全局变量可以在整个程序中访问,但要注意作用域和命名冲突。
在函数内部使用全局变量
如果在函数内部需要使用全局变量,可以使用 global 关键字来指明该变量是全局变量。如果函数中没有使用 global 关键字,那么函数内部使用的变量默认为局部变量。
def func():
global a
a = 10
print(a)
a = 20
func() # 输出结果为:10
print(a) # 输出结果为:10
注意:当在函数内部使用 global 关键字指明全局变量时,就会覆盖原来的变量。例如,上面的例子中,a 变量在调用 func 函数后变为了 10。
局部变量
局部变量的作用域只在函数内或语句块内部有效。在函数外部无法访问局部变量。
def func():
a = 10
print(a)
func() # 输出结果为:10
print(a) # 报错:name 'a' is not defined
在上述代码中,a 只在函数内部有效,外部无法访问。
Python中的变量作用域规则
- 变量的作用域规则是 LEGB 规则,即 Local、Enclosing、Global、Built-in 四种。
- Local 表示函数内部的作用域。
- Enclosing 表示函数内部嵌套函数的作用域。
- Global 表示全局作用域,也就是在整个程序中都可以访问的区域。
- Built-in 表示内置作用域,也就是 Python 自带的变量和函数名,如 print(),len() 等等。
总结
Python 中的全局变量和局部变量的处理方式主要使用 global 关键字来指明变量的作用范围。在使用全局变量时要注意命名冲突的情况,而在使用局部变量时要根据作用域的规则来判断变量能否被访问。
