标签:必须 其它 出现 独立 pytho val 动态 警告 长度
1.位置参数:从左至右进行匹配
2.关键字参数:通过参数名进行匹配
3.默认参数:为没有传入值的参数定义参数值
4.可变参数(动态传参):收集任意多基于位置或关键字的参数
? 在函数中,参数出现顺序为:位置参数、关键字参数、默认参数(函数定义时)、任意长度的位置参数、任意长度的关键字参数
def f(id,name,age):
print(id,name,age)
f(1901001,'Able',21)
# 1901001 Able 21
f(id =1901001,'Able',21)
#报错
f(1901001,'Able',age =21)
# 1901001 Able 21
# 位置参数 > 关键字参数
def f(name,age,gender = 'man'):
print(name,age,gender)
f('Able',21)
# Able 21 man
def f(name,gender = 'man',age)
print(name,age,gender)
#导致默认参数无法使用,还会增加关键字参数的使用
# 位置参数 >关键字参数 > 默认参数
重要警告: 默认值只会创建一次。这条规则在默认值为可变对象(列表、字典以及大多数类实例)时很重要
def func(a,L = []):
L.append(a)
print(a,L)
func(1) #第一使用默认参数
func(2,L = [2])
func(3) #第二次使用默认参数
#结果:
1 [1]
2 [2, 2]
3 [1, 3]
1.任意数量的位置参数
def func(*arges):
print(arges)
func(1,2,3)
#结果
(1, 2, 3)
#Python将所有位置相关的参数收集到一个新的元组中,并将这个元组赋值给变量arges。
#在函数定义时,如果将位置参数放在*arges后面,在函数调用时,都会当作是*arges的形参,从而引发错误。
2.任意数量的关键字参数
def func(**kwarges):
print(kwarges)
func(a = 1,b = 2)
#结果
{'a': 1, 'b': 2}
# **它只对关键字参数有效,将这些关键字参数传递给一个新的字典
#在函数定义时,如果将关键字参数或默认参数放在**kwarges后面,在函数调用时,都会当作是**kwarges的形参,从而引发错误。
? 在函数调用时,同样能够使用*和**语法
def func(a,b,c):
print(a,b,c)
L = [7,8,9]
func(*L)
# 7 8 9
#在函数调用时,*会对参数集合进行解包。
def func(a,b,c):
print(a,b,c)
D = {'a':1,'b':2,'c':3}
# 1 2 3
#在函数调用时,**会以key:value对的形式解包一个字典,使其成为独立的关键字参数。
? 查找一个序列中与其它n(n>1)个序列中的相同元素(每个序列中都至少有一个)
def union(*arges):
res = []
for i in arges[0]:
for other in arges[1:]:
if i not in other:
break
else:
res.append(i)
return res
keyword - only参数
def kwo(a,*b,c):
print(a,b,c)
#c必须按关键字传递
例如内置函数map(function,iterable)
标签:必须 其它 出现 独立 pytho val 动态 警告 长度
原文地址:https://www.cnblogs.com/notfind/p/11479863.html