函数的接收不定长参数 *args 和**kwargs的用法

"""



def demo(*args):
    print(args)
demo(1, 2, 3, 4, 5, 6, 7, 8, 9)
demo()
print(max(1, 2, 3, 4))
print(max('abcdef'))
"""
"""
def demo(a, b, *args):
#     print(a, b, args)

    print(args, a, b)

demo(1, 2, ) #1 2 ()
demo(1, 2)
# demo(1, 2, 3, 4, 5) #1 2 (3 4 5)


# def demo(*args, a = 1):
# demo('x', 'y') #('x', 'y') 1

"""


def demo(**kwargs):
    print(kwargs)
myDict = {'a':'a', 'b':'b'}
demo(**myDict) #在调用处 将字典转换为关键字

def funarg1(arg):  #只允许传入第一个参数
    print(arg)
funarg1(1)


def funargs(arg1, arg2, arg3):
    print(arg1, arg2, arg3)
funargs(1, 2, 3)

def funkwargs(**kwargs):
    print(**kwargs)

def funargs_Kwargs(*args, **kwargs): # 在函数的位置上*b将其转化为元组,而双星**b代表接收多个关键字参数,并将其转化为字典
    print('args={}'.format(args))
    print('kwargs={}'.format(kwargs))

funargs_Kwargs(1,2,3,4)
funargs_Kwargs(1, 2, 3, 4, a=2, b=3)
funargs_Kwargs(1, [1,2,3,4],None, 4, a=2, b=3)
#同时使用*args 和**kwargs时,*args必须在**kwargs之前
#def funargs_Kwargs(**kwargs, *args):  SyntaxError: invalid syntax
#如果在变量前面使用单星号,实际上是对变量的一次拆解操作,将变量中单独的元素拆解出来,然后依次传入one()函数,而传入one()函数后,one()函数会将这些传入的单个元素保存成一个元组,这就是为什么我们 print(x[0])能够提取第一个元素的原因

def demo(x,*args,**kwargs):
  print(x,args,kwargs)
demo(1,2,3,4,a=1,b=2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值