第1月3周4天
Posted yonghuierming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第1月3周4天相关的知识,希望对你有一定的参考价值。
- 函数的动态参数 *args,**kwargs,形参的顺序
- 名称空间,临时名称空间,作用域,取值顺序,加载顺序
- global,nonlocal
- 函数的嵌套
!!!note qi
是否需要垃圾桶?
收集组员信息
!!!
位置参数要在关键字参数前边
实参 1.位置参数,2.关键字参数,3混合参数
形参 1.位置参数,2.默认参数
函数体如果一行可以放在函数名后边
"汉字也是True"
In [8]: "喊".isalpha()
Out[8]: True
def func4(l):
return l[0:2] # 返回长度不超过2
所有项目的功能首先要想拓展性
动态参数
*args,**kwargs
在函数定义时,在位置参数加星,代表聚合
将所有实参的位置参数
聚合到一个元组
并将元组返回给一个星变量名
在函数定义时,在关键字参数加两个星
将所有实参的关键字参数
聚合到一个元组
并将元组返回给两个星变量名
星的用法
def func1(*args):
print(args)
func1(*l1,*l2) "对列表解包"
#字典是*{‘a‘:1,‘b‘:2} 返回keys()
$$**{‘a‘:‘b‘} => a = ‘b‘$$
默认参数要在位置动态参数后边,因为如果不这样收到的参数不对
默认参数要在关键字动态参数后边,因为后者会接收所有的关键字参数,默认参数只有默认值。
名称空间
程序编译时cpython从上到下一次运行时发现程序中的变量与值,会在内存中开辟空间叫
名称空间,命名空间,全局名称空间
存储变量名与值的内存地址的对应关系
看到函数名将函数名与函数体对应关系存放到名称空间,但函数体不加载到内存中。
直到碰到函数的调用,执行函数。在内存中临时开辟空间,加载函数体所有数据,这个空间会在函数执行完毕后消失,临时名称空间
- 全局名称空间 global
- 局部名称空间 local
- 内置名称空间 内置模块 builtins
作用域:
全局作用域
全局名称空间 > 内置名称空间
局部作用域
局部名称空间
取值顺序
就近原则 单向从小到大
外部有内部没有,引用不会,改变会报错
加载顺序
内置名称空间> 全局名称空间 (程序执行时)> 局部名称空间()
函数的嵌套
global nonlocal
局部名称空间,对全局名称空间的变量可以引用,但不能改变。
UnboundLocalError: local variable ‘count‘ referenced befor assignment
如果你在局部名间对一个变量进行修改,那么解释器会认为你的变量在局部中,已经定义了。但是对于有上面的例题局部没有,所以报错
global 作用
- 局部名称空间声明一个全局变量,需要变量已存在
- 在局部名称空间可以对全局变量进行修改
nonlocal
在py2没有
外层对内层的影响是,内层可以引用外层变量,但无法改变。
子函数对父级函数的变量修改
此变量不能是全局变量。nonlocal 操作的是局部名称空间的变量。
以上是关于第1月3周4天的主要内容,如果未能解决你的问题,请参考以下文章