参数带星号表示支持可变不定数量的参数,这种方法叫参数收集

参数带星号表示支持可变不定数量的参数,这种方法叫参数收集。
星号又可以带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))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值