python 变量作用域
-
块级作用域
-
python中变量没有块级作用域,下面代码能够正常运行
if True:
name = 'xiaoming'
print(name) -
-
局部作用域
-
局部变量:定义在函数内部的变量叫局部变量,只能在函数内部使用
def test():
a = 10
test()
# 此处会报错
# print(a) -
-
全局作用域
-
全局变量:定义在函数外部的变量叫全局变量,哪里都可以使用(但是不能修改)
num = 20
def show():
# 加上这句代码,就可以在函数内部修改全局变量
global num
num = 30
print(num) -
show() print(num)
> 当函数内部与外部有同名变量时,优先使用内部的
说明:
1. 全部变量在函数内部只能使用不能修改
2. 若要在函数内部修改全局变量,通过global关键字声明
- nonlocal
- 内部函数使用外部函数的局部变量时使用
```python
def wai():
age = 20
def nei():
# 使用外层函数的局部变量
nonlocal age
age = 30
print(age)
nei()
print(age)
wai()
加上nonlocal就可以在内部函数中修改外部函数的局部变量了