一、定义:
1.作用域指的是变量的可用范围
二、作用域的分类
按作用域声明的位置不同可分为四类
局部作用域 | 函数体中声明的变量 |
嵌套作用域 | 嵌套函数体中外层函数体总声明的变量 |
全局作用域 |
py文件中声明的变量 |
内置作用域 | Python提供的变量(函数) |
三、作用范围
内置作用域 > 全局作用域 > 嵌套作用域 > 局部作用域
注意:只能小的作用范围访问大的作用范围
c=30
def outter():
a=10
def inner():
b=20
print(b)
print(a)
#print(b)#超出他的作用范围,报错
inner()
print(c)
outter()
print('sss')
结果:
20
10
30
sss
解析:
四、变量的搜索顺序
局部作用域-->嵌套作用域-->全局作用域-->内置作用域
先从当前位置查找,如果找到则立即停止查找,如果没有找到,就网上一层找,以此类推,如果都没有找到,报错
a=1
def outter():
a=10
def inner():
a=20
print(a)
inner()
outter()
print(a)
结果:
20
1
解析:
五、了解global和noolblobal
1.global关键字可以将一个局部变量变成一个全局变量
2.noolblobal关键字可以修改外层(非全局)变量