欢迎光临数控冲床厂家制造多样化高质量产品!

数控冲床厂家

数控冲床厂家销售生产为主,设备高效稳定运转。

Python可变长度参数、函数嵌套、名称空间、关键字

作者:以沫      发布时间:2021-04-13      浏览量:0
一。变量长度参数1。变量长度参数中的(*

一。变量长度参数

1。变量长度参数中的(*)

参数接收所有溢出位置参数,然后存储元组的形式,然后将元组分配给后一个参数。需要注意的是,在*之后的参数名被简化为args。

def SUM_Self(*args):res=0表示num在args:res+=num返回resres=sum_Self(1,2,3,4)打印(Res)#10。

推荐PythonDaniel在线共享技术来加强Qun:855408893领域:网络开发、爬虫、数据分析、数据挖掘、人工智能。

2.如果变量长度参数(*)

参数,则后参数的值将被循环并散布到位置参数中。将来,每当您遇到一个引用时,它都是一个位置参数,应该立即分散到一个位置引用中来查看。

def func(x,y,z,*args):print(x,y,z,args)func(1,*(1,2),3,4)#1,2(3,4)。

3.将接收变量长度参数(**)

中的所有关键字参数,然后以字典的形式存储字典,然后将字典分配给参数。注意,在**后面的参数名通常被定义为kwargs。

def func(**kwargw):print(Kwargw)func(a=5)#{‘a’:5}

4。如果变量长度参数(**)

参数,则后参数的值将被循环并分解为关键字参数。将来,每当您遇到一个引用时,它就是一个关键字引用,应该立即分解为一个关键字引用。

def func(x,y,z,**kwargs):print(x,y,z,kwargs)func(1,3,4,*{a‘:1,’b‘:2})#1-3{’a‘:1,’b‘:2}

5。可变长参数应用

def索引(名称、年龄、性别):打印(f“名称:{name},年龄:{age},性别:{sex}”)def包装器(*args,**kwargs):print(f“args:{args}”)print(f“kwargs:{kwargs}”)索引(*args,**kwargs)包装器(name=‘Nick’,sex=‘man’,年龄=19)‘’args:()kwargs:{‘name’:‘Nick’,‘sex’:‘man’,‘年龄’19}名:Nick,年龄:19,性别:男性‘’

二。函数嵌套的最佳返回值

,函数调用

(如

#)第一个def f1():def f2():print(‘asdad’)返回f2f2=f1()f2()#第二个def f1():def f2():print(‘asdad’)返回f1()#最好以第一种方式运行,第二种操作类型可能会造成一些不必要的麻烦。

函数中的函数只能在函数内调用,如果

def f1():def f2():print(‘asdad’)f2()将报告错误,则不能在函数外部调用

3。命名空间

1。在内置名称空间

名称空间(名称空间)的内存管理章节中,我们说创建变量实际上打开了内存中的一个新空间。然而,我们一直在避免存储变量名,但是实际上内存中有一块内存来存储变量名称和变量之间的绑定关系,这个空间称为命名空间。

生命周期:在python启动时,python关机

2.全局名称空间

全局命名空间:除了内置名称和本地名称外,其余的名称都存储在全局命名空间中。

生命周期:在文件执行时生效,在文件执行结束时失效

3。本地名称空间

本地名称空间:用于保存函数调用期间由函数体生成的名称。

生命周期:在执行文件时在函数调用期间生效,在函数执行结束后到期。

例如:

x=1#,其中X,F1是全局命名空间,print是内置的命名空间,F2是本地print(X)def f1():def f2():print(‘from f2’)f1()f1()f1,f1和f1()。

关于三种x=1 def的加载顺序:

内置的命名空间

本地名称空间

关于查找:

如果搜索的起点在本地命名空间中,他将开始从本地空间的底部向上查找,如果他在本地空间中找不到它,则转到全局命名空间,如果还没有找到它,就开始查找它。如果他还没有找到它,他将进入内置名称空间找到它。他不会去别的地方找它。

如果起点在全局命名空间中,他将不去本地空间开始查找,他将转到全局开始查找,如果全局找不到,他将查找内置的命名空间。

4.关键字

1.全局关键字

修改全局范围内的变量。

x=1 def f1():x=2 def f2():全局x#修改全局x=3f2()f1()print(X)#3。

2.非本地关键字

修改本地作用域中的变量。

x=1 def f1():x=2 def f2():非局部x=3f2()print(X)f1()。

3.注意

1,这两个关键字必须写在本地名称空间变量名的第一次出现之前。如果您想在本地修改全局变量类型,则不需要任何声明,您可以直接修改它。3.如果要在本地修改全局不可变类型,则需要使用全局声明将其声明为全局变量,并且可以直接修改它。