5. 局部变量和全局变量
作用域
作用域指的是变量、函数和类等标识符在代码中的可访问区域。
Python主要有四种作用域:
- 局部作用域(Local)
- 嵌套函数作用域(Enclosing Function Local)
- 全局作用域(Global)
- 内置作用域(Built-in)
局部变量和全局变量
局部变量
- 在函数内部定义的变量称为局部变量(函数的形参也是局部变量)。
- 局部变量只能在函数的内部使用。
- 局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁。
全局变量
- 在函数外部、.py文件的内部定义的变量称为全局变量。
- 全局变量可以在整个程序中被访问,包括在函数内部。
- 在函数内部不能直接改变全局变量的绑定关系(不能重绑定)。
局部变量说明:
- 在函数内首次对变量赋值是创建局部变量,再次为变量赋值是修改局部变量的绑定关系。
- 在函数内部的赋值语句不会对全局变量造成影响。
- 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个模块范围内访问。
局部变量示例
# 此实例示意什么是局部变量
def fn(a, b):
c = 10
print('局部变量abc:', a, b, c) # a, b, c三个都是局部变量
fn(1, 2)
print('全局变量abc:', a, b, c) # 报错, 因为a,b,c 在调用后就销毁了
全局变量示例
# 此实例示意全局变量和用法
a = 100 # 函数外部创建的变量是全局变量,此变量一直有效
b = 200
c = 300
d = 400
def fn(a, b):
c = 10
print(a, b, c) # a, b, c三个都是局部变量,函数内部优先访问局部变量
print('d:', d)
fn(1, 2)
print(a, b, c, d) # 报错, 因为a,b,c 在调用后就销毁了