动态参数
当传给函数的参数很多,不定个数的时候,就可以用*args , **kwargs 接收,
arge是元祖形式,接收除去键值对以外的所有参数,
kwargs接收的只是键值对的参数,并且保存在字典中。
命名空间
代码运行初,创建的存储 ‘变量名与值的关系’ 的空间叫 全局命名空间。
在函数运行中 开辟的临时空间叫 局部命名空间。
内置命名空间中存放了python解释器为我们提供的名字
加载顺序 : 内置 ----> 全局 ----> 局部
取值顺序 : 从小到大寻找
作用域
全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被引用、全局有效
局部作用域:局部名称空间,只能在局部范围内生效
global:
1,声明一个全局变量。
2,在局部作用域想要对全局作用域的全局变量进行修改时,需要用到 global(限于字符串,数字)。
######### 对可变数据类型(list,dict,set)可以直接引用不用通过global。 ########
nonlocal:
1,不能修改全局变量。
2,在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改 变。
函数的本质
函数名本质上就是函数的内存地址。
1,可以被引用
2,可以被当做容器类型的元素
3,可以被当做函数的参数和返回值