文章目录
函数基础补充
一、命名空间和作用域
1、命名空间:
01、命名空间分类:
内置命名空间:python解释器内置的名称,比如函数名 abs、char 和异常名称 BaseException、Exception 等等
全局命名空间:在模块.py文件中直接声明出来的变量函数,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量
局部命名空间:在函数内部声明的变量,记录了函数的变量,包括函数的参数和局部定义的变量
02、空间大小:
内置 > 全局 > 局部
03、加载顺序:
内置 --> 全局 --> 局部
04、取值顺序
局部 --> 全局 --> 内置
2、作用域:
01、全局作用域: 全局命名空间 + 内置命名空间
print(globals())
globals()获取到全局作用域(内置,全局)中的所有名字
02、局部作用域: 局部命名空间
print(locals())
locals()查看当前作用域中的所有名字
3、关键字global和nonlocal
01、global的使用
a = 10 # 全局作用域中的a
def cs():
a = 20 # 在自己的局部作用域中使用的a,是全新的变量a
print(a) # 局部作用域中的a
cs() # 20
print(a) # 10
def cs1():
global a # 关键字global后用的是全局中的变量a
a += 10 # 改变全局变量中的a
print(a) # 全局作用域中的a
cs1() # 20
print(a) # 20
02、nonlocal的使用
def cs2():
a = 10
def cs3():
a = 20
print(a) # 局部作用域def cs3():中的a