参数带星号表示支持可变不定数量的参数,这种方法叫参数收集。
星号又可以带1个或2个,带1个表示按位置来收集参数,带2个星号表示按关键字来收集参数。
1、带一个星号的参数收集模式:
这种模式是在函数定义时在某个形参前面加一个星号,调用时按位置匹配不带星号的形参和实参,多余的实参都将作为一个元组的元素保存到星号对应的形参中。
2、带两个星号的参数收集模式:
带1个星号的参数收集模式的收集参数不能收集关键字参数传递的实参,要收集关键字参数传递的实参,需要在收集参数前使用两个星号,此时收集参数对应的是一个字典而不是元组。
参数前加星号,这种方法叫:参数收集
#位置参数,是一个元组,一个星号
def he(*args):
total=1
for arg in args:
#print(arg)
#total*=arg
total=total*arg
return total
h=he(2,3,4)
print(h)#24
#关键字参数,是一个字典,2个星号接收
def accept(**kwargs):
for keyword,value in kwargs.items():
print("%s=>%r"%(keyword,value))
accept(foo='bar',spam='eggs')
'''
#accept()打印结果:
foo=>'bar'
spam=>'eggs'
'''
dic={"foo2":"bar2","spam2":"eggs2"}
for keyword,vale in dic.items():#items一定要和for循环一起使用,因为他要遍历
print('itemskeyword:{},itemsvale:{}'.format(keyword,vale))
#打印 itemskeyword:foo2,itemsvale:bar2
#itemskeyword:spam2,itemsvale:eggs2
#参数前加星号,这种方法叫:参数收集
def jiafa(a,b,c):
return a+b+c
cc=jiafa(1,2,3)
print('cc:',cc)#cc: 6
def jiafa2(a,*b,**c):
return a,b,c
args=(2,3,3)
kwargs={'b1':4,'b2':5}
ss2=jiafa2(1,args,kwargs)
print('ss2',ss2)
#ss2 (1, ((2, 3, 3), {'b1': 4, 'b2': 5}), {})
def fool(x,y):
print(x,y)
#用一个*把参数封装成tuple
args =(2,3)
fool(*args)#2 3
#用2个**把参数封装成字典
kwargs={'x':4,'y':5}
fool(*kwargs)#指打印键名#x y
fool(**kwargs)#4 5
def a(*a):
print(a)
aa=("username","pwd")
a(aa)#(('username', 'pwd'),)
a((22,33),(24,34))#((22, 33), (24, 34))
参数带星号表示支持可变不定数量的参数,这种方法叫参数收集
于 2023-04-07 14:20:24 首次发布