day 10 函数进阶

1. 动态传参, 可以接收任意的参数
顺序: 位置参数 *args 默认值参数 **kwargs
形参的一种方式
1. 位置参数的动态传参 写法: *参数名 例如: *args
接收的参数是tuple类型
2. 关键字参数的动态传参. 写法: **参数名 例如: **kwargs
接收的参数是dict类型
无敌传参:
def func(*args, **kwargs):
pass
*,** 的作用:
在形参: 聚合
在实参: 打散

2. 作用域的问题
1. globals() 获取全局作用域中的内容
2. locals() 获取局部作用域中的内容

3. 函数嵌套--函数的执行流程
所有的()表示的是函数的调用

4. global和nonlocal
global: 寻找全局作用域中的内容
nonlocal: 寻找上一级作用域中的内容, 但不能是全局的

形参的接收顺序。

:位置参数 *args 关键字参数 **kwargs  默认值参数

什么是命名空间,什么是全局名称空间,什么是局部名称空间,什么是内置名称空间。

存放名字和值的关系的空间叫命名空间,也就是存放变量的空间

全局空间,在函数外面申明的变量形成的命名空间叫全局空间

局部空间,在函数内部申明的变量形成的命名空间叫局部空间

内置空间,Python 内部给我们提供的名字叫内置空间

什么是全局作用域,什么是局部作用域。

全局作用域,包含内置命名空间和全局命名空间. 在整个⽂文件的任何位置都可以使⽤用

局部作用域,只有在函数内部可以使⽤用

名称空间的加载顺序,取值顺序。

加载顺序:1. 内置命名空间

    2. 全局命名空间

    3. 局部命名空间(函数被执⾏行行的时候

取值顺序:

1. 局部命名空间

2. 全局命名空间

3. 内置命名空间

解释一下什么是global,什么是nonlocal。

Global :不再使⽤用局部作⽤用域中的内容了了. ⽽而改⽤用全局作⽤用域中的变量量(调用全局作用域的变量)

Nonlocal: 表⽰示在局部作⽤用域中, 调⽤用⽗父级命名空间中的变量量.(永远调用上一级的作用域变量)

猜你喜欢

转载自www.cnblogs.com/wy3713/p/9174730.html