Python基础10_动态传参,名称空间和作用域,函数嵌套,关键字global和nonlocal

一.函数参数-形式参数-动态传参
1. 动态接收位置参数 args
在参数位置编写
表示接收位置参数,在形参位置把传递过来的实参进行聚合,聚合成元祖
注意:动态参数必须在位置参数后面
2. 动态接收关键字参数 kwargs
在参数位置编写
表示接收动态关键字参数,接收的是一个字典
动态传参的最终顺序: 位置参数 > args > 关键字参数 > kwargs
可以随意搭配,但顺序不能变
形参: 聚合
位置参数
-> 元组
关键字参数
-> 字典
实参: 打散
列表, 字符串, 元素 -> *
字典 -> **
3. 动态传参的另一种传参方式:
def chi(args):
print(args)
lst = [a, b, c]
chi(
lst)
#在实参位置上给一个列表,元祖或字符串,前面加表示表示把这个序列按顺序打散
#在形参的位置上加
表示把接收道德参数组合成一个元祖
如果实参位置是一个字典,也可以打散,但是要加**
4. 无敌传参
def func(*args, **kwargs) 任何参数都可以接收
二. 命名空间和作用域
1.命名空间:存放名字和值的关系的空间,变量就是存储在这个空间
分类:
全局名称空间:我们直接在py文件中函数外声明的变量都数以全局名称空间
局部名称空间:在函数中声明的变量会放在局部名称空间
内置名称空间:存放在python解释器中的一些内置内容
加载顺序: 内置名称空间,全局名称空间,局部名称空间(函数被执行的时候)
取值顺序:局部名称空间,全局名称空间,内置名称空间
名称空间可能有无数个
局部名称空间是相互独立的
2.作用域:就是作用范围,按照生效范围分为全局作用域和局部作用域
全局作用域:包含内置名称空间和全局名称空间,整个文件的任何位置都可以使用(遵循从上到下逐行进行)
局部作用域:包含局部名称空间,在函数内部可以使用
globals() 查看全局作用域中的内容 写在哪查看哪的内容 返回值类型是字典
locals() 查看局部作用域中的变量和函数信息 写在哪里都一样查看全局作用域内容 返回值类型是字典
可以从局部作用域向全局作用域寻找
三. 函数的嵌套
在函数中声明函数
只要遇见了()就是函数的调用,如果没有()就不是函数的调用
在内部函数中使用变量的时候, 查找顺序: 先找自己 -> 上一层 -> 上一层..全局 -> 内置
四. 关键字global和nonlocal
global 表示从全局把一个变量引入到局部
nonlocal 表示在局部寻找离他最近的外层的一个变量

原文地址:https://www.cnblogs.com/guyannanfei/p/10085476.html