python def fun,Python中func函数
原标题:Python的函数参数详解
序
Python中函数的参数可以分为两类:形参和实参~
Def func(x,y): # x,y是形参
打印(x,y)
Func(2,3) # 2,3是实际参数。
-形式参数
参数(比如上面的x,y)只在定义的函数中有效。函数调用完成后,参数变量就不能再用了。当一个函数被调用时,函数中的参数将被分配内存和赋值;当函数调用结束时,分配的内存空间也被释放~
-实际参数
也就是在调用一个函数时,将某个值(必须是某个值)传递给该函数的参数。传递的值可以是常量、变量、表达式、函数等形式~
在形参和实参中,可以细化为各种形参,如位置形参、缺省形参、变长形参等。有立场论元,关键词论元等。下面分别介绍~
位参量
顾名思义,参数是从左到右定义的。位置参数有两种:位置参数和位置参数。在上面的例子中,func函数中的x和y是位置参数,每个位置参数都必须传递一个值。调用func时,传递的2和3是位置参数,位置参数一一对应,不多不少~
关键字参数
参数是针对实参的,也就是实参在定义的时候是以key=value的形式定义的。
def func(x,y,z):
打印(x,y,z)
func(1,z=2,y=3)
关键字不需要像位置参数那样与形式参数一一对应,比如Z可以在前,Y可以在后。
使用积分:
1)调用函数时,位置参数必须在关键字参数之前~
def func(x,y,z):
打印(x,y,z)
#当位置参数和关键字参数混合时。
Func(1,z=2,y=3) #正确
Func(x=1,z=2,3) #错误
2)一个参数不能重复传递。
def func(x,y,z):
打印(x,y,z)
Func(1,x=2,y=3,z=4) #错误,参数x重复传递值
默认参数
默认情况下,参数在函数定义阶段被赋给参数。
DEF (x,y=10): # y是默认参数
及格
#在函数调用阶段,必须为X传值(位置参数),也可以为Y传值,也可以不传。如果不传递该值,将使用默认值10。
函数(1) # x=1,y=10
函数(1,2) # x=1,y=2
默认参数使用注意事项:
1)定义函数时,默认参数必须放在位置参数之后。
Def func(y=10,x): #错误
及格
Def func(x,y=10): #正确
及格
2)默认参数通常定义为不可变类型,如数字、字符串、元组等。尽管语法支持可变类型的定义,但通常不建议这样做。
3)默认参数在定义阶段只分配一次,如下例所示:
x=10
def func(姓名,年龄=x):
及格
x=20
func(你好)
提示:定义Tip:func函数时,age只赋值一次,即age=10。下面重新指定x=20,它不会作用于函数中的年龄参数。
可变长度参数
定义函数时,如果不确定调用时需要传入多少个参数,可以使用变长参数,即参数个数不固定。
可变长度参数可以分为两类:
1)由位置(*)定义的可变长度参数
2)由关键字(* *)定义的可变长度参数
-由位置定义的可变长度参数
Def func(x,y,*args): # *args会将传入的冗余参数存储为一个元组,元组的变量名为args。
打印(x,y)
打印(参数)
func(1,2,3,4,5,6) # x=1,y=2,args=(3,4,5)
#输出结果:
1 2
(3, 4, 5, 6)
提示: args=(3,4,5,6),所以 *args=*(3,4,5,6),在调用函数时,还可以使用下面的方法传递值(*用来处理位置参数,意思是反汇编下面的元组)
Func(1,2,*(3,4,5,6)) #等价于func(1,2,3,4,5,6)
#输出结果:#结果一致。
1 2
(3, 4, 5, 6)
-由关键字定义的可变长度参数
Deffunc (x,y,* * kwargs): # * * kwargs将把多输入参数存储为dict。
打印(x,y)
印刷品(夸脱)
func(1,2,a=3,b=4,c=5) # x=1,y=2,kwargs={a: 3, b: 4, c: 5}
#输出结果:
1 2
{a: 3, b: 4, c: 5}
提示: kwargs={a: 3, b: 4, c: 5} ,所以 **kwargs=**{a: 3, b: 4, c: 5} ,在调用函数时,还可以使用以下方法
Func (1,2,* * * { a :3, b: 4, c: 5}) #等价于func(1,2,a=3,b=4,c=5)
#输出结果:#输出结果一致。
1 2
{a: 3, b: 4, c: 5}
接收任意长度和形式的参数的函数。
def func(*args,**kwargs):
及格
呼叫方法:
func(1,2,3) #参数被*接受,转换成元组,保存在args中。
Func(1,x=1,y=2) # 1与上面一致,x=1,y=2被* *接受,转换成字典形式保存在kwargs中。
#如前所述,位置实参和关键字实参混合使用时,需要注意的是关键字实参一定要放在位置实参之后~
命名关键字参数
定义函数时,*符号后的参数是命名的关键字参数。调用时,命名关键字参数必须传值,而且必须以关键字的形式传值,命名关键字不常用~
Def func(*,name,age): # name和age是命名关键字参数。
打印(姓名)
打印(年龄)
Func(name=abc ,age=2) # name和age必须作为关键字传递。
使用命名关键字参数的示例。如前所述,默认参数必须放在位置参数之后。在下例的函数定义中,name和age都是命名关键字参数(既不是默认参数也不是位置参数),name是命名关键字参数的默认值,所以下例的函数定义没有问题~
def func(*,name=kitty ,age):
打印(姓名)
打印(年龄)
func(年龄=2)
...返回搜狐查看更多。
责任编辑:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。