python**和*各种使用,*args和**kwargs可变参数详解总结(全)

python 里面 *和**不表示指针,但是却有着很神奇的作用

下面介绍一下**和*在列表取值和接收可变形参,压缩实参等的功能

1、智能匹配接收列表的多个元素

代码如下:

ll = [1,2,3,4,5,6,7,8]
first, *lest, end = ll
print(first)
print(lest)
print(end)

执行结果:
接收列表参数1

可以看到中间的列表元素被匹配出来了

再举一个例子:

ll = [1,2,3,4,5,6,7,8]
first, second, *lest, end = ll
print(lest)

接收列表元素2


2、*args接收函数参数转换为列表使用

代码如下:

def func(*args):
    for i in args:
        print(i)

func(2,3,5)

执行结果:
函数参列表接收

可以看出 :*arg使函数可以接收任意多个参数,将实参数转换为列表使用

3、*list将列表每个元素依次做实参传入函数

代码如下:

ll = [2,5,6] 

def func(*args):
    for i in args:
        print(i)

func(*ll) # 相当于 func(2, 5, 5)

执行结果:
列表元素做实参

可以看出;列表被‘压缩’作为实参依次传入函数中

4、**kwarg接收实参作为字典使用

代码如下:

def func(**kwargs):
    for i in kwargs.items():
        print(i)
    
func(name='js', gender='man')

执行结果:
kwarg实参接收为字典

可以看出;参数被接收到函数内部作为参数字典使用

5、**dict将字典元素依次做指定实参

代码如下:

arg = {'name': 'js', 'gender': 'man'}
def func(name, gender):
    print('this perpeo name and gender is ' + name+ ' ' + gender)
    
func(**arg)

可以看出:字典被’压缩’,依照键值对应的方式作为实参精准传入函数

6、同时拥有*args和**kwarg形参的函数

代码如下:

def func(*args, **kwargs):
    print('args: ')
    print(args)
    print('kwargs :')
    print(kwargs.items())

func(2,4,5,name='js',gender='man')

执行结果:
同时拥有*args和**kwarg形参的函数

可以看出:没有指定位置的参数被*arg接收,指定位置的参数被**kwarg接收

最后看一个很动态的例子,总结一下*arg和**kwarg在传参和使用参数的综合使用

ll = [2,5,6] 
arg = {'name': 'js', 'gender': 'man'}

def func(*args, **kwargs):
    print('args: ')
    print(args)
    print('kwargs :')
    print(kwargs.items())

func(*ll, **arg)

执行结果:
综合使用

总结 :**和在列表元素匹配,函数使用字典或列表参数(整理参数)和传入字典或列表参数(压缩参数)都有着重要的作用,在装饰器也经常用到,用来接收或者传入任意类型,任意数量的参数,使python语言更动态但是会降低代码可读性,谨慎使用!*

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值