一.return 返回值
自定义函数的返回值,return 可以把值返回到函数的调用处
(1) return + 六大标准数据类型 , 还有类和对象,函数
如果不定义return , 默认返回的是None
(2) 在执行完return之后,立刻终止函数,后面的代码不执行
global 可以使用global 关键字在函数内部定义一个全局变量
也可以使用global关键字在函数内部修改一个全局变量
__doc__ 或者 help查看文档
函数中的注释可以通过help(函数名) 或 函数名.__doc__ 查看
二.函数的嵌套
(1)函数之间可以互相嵌套
外层的叫做外函数
内层的叫做内函数
(2)LEGB 原则 (就近找变量原则)
找寻变量的调用顺序采用LEGB原则(即就近原则)
B —— Builtin(Python);Python内置模块的命名空间 (内建作用域)
G —— Global(module); 函数外部所在的命名空间 (全局作用域)
E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)
L —— Local(function);当前函数内的作用域 (局部作用域)
依据就近原则,从下往上 从里向外 依次寻找
nonlocal 修改局部变量
nonlocal遵循LEGB就近找变量原则
(1)找当前空间上一层的局部变量进行修改
(2)如果找不到,会继续向上寻找
(3)最后什么也没有,直接报错
三.locals 和 globals(了解)
(1)locals 获取当前作用域中所有变量
locals 如果在全局,调用locals之后,获取的是打印之前的所有变量,返回字典,全局空间作用域
1 def func():
2 ff = 123
3 a = 1
4 b = 2
5 res = locals()
6 c = 3
7 print(res) #获取此行之前的所有变量 返回字典
8 d = 4
locals 如果在局部,调用locals之后,获取的是调用之前的所有变量,返回字典,局部空间作用域
1 a1 = 10
2 def func():
3 a = 1
4 b = 2
5 res = locals() #获取此行之前的所有变量 返回字典
6 c = 3
7 print(res)
8 d = 4
9 a2 = 20
10 func()
11 a3 = 30
(2)globals 只获取全局空间中所有变量
globals 如果在全局,调用globals之后,获取的是打印之前的所有变量,返回字典,全局空间作用域
1 def func():
2 ff = 123
3 a = 1
4 b = 2
5 res = globals()
6 c = 3
7 print(res) # 获取此行之前的所有变量,返回字典
8 d = 4
globals 如果在局部,调用globals之后,获取的是调用之前的所有变量,返回字典,全局空间作用域
1 a1 = 10
2 def func():
3 a = 1
4 b = 2
5 res = globals()
6 c = 3
7 print(res)
8 d = 4
9 a2 = 20
10 func() # globals 返回此行之前的所有外部变量
11 a3 = 30