7.29_python_lx_day11

一.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

猜你喜欢

转载自www.cnblogs.com/Magicianlx/p/13394724.html