Python: 参数前的*

本文摘录自FishC。我觉得很实用,就写下来了。

星号(*)作为形参的时候起到“打包”的作用;相反,作为实参时起到“解包”得作用;

1)星号(*)作为形参,表示调用可变参数函数

通过在形参前加一个星号(*)或两个星号(**)来指定函数可以接受任意数量的实参;

def fun1(*args):
	print(type(args))
	print(args)

fun1(1,2,3,4,5)

输出:

<class 'tuple'>
(1, 2, 3, 4, 5)
def fun2(**args):
	print(type(args))
	print(args)
fun2(a=1,b=2,c=3,d=4,e=5)

输出:

<class 'dict'>
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

从上面可以看出,当参数形如*args时,传递给函数的任意个实参会按位置打包成一个元祖(tuple);

当参数形如**args时,传递给函数的任意个key=value实参会被打包成一个字典(dict);

2)星号(*)作为实参,表示通过解包参数调用函数

有打包就有解包,通过在实参前加一个星号(*)或两个星号(**)来对列表(list),元祖(tuple)或字典(dict)进行解包;

>>> a=[1,2,3,4,5]
>>> b=(1,2,3,4,5)
>>> fun1(*a)
<class 'tuple'>
(1, 2, 3, 4, 5)
>>> fun1(*b)
<class 'tuple'>
(1, 2, 3, 4, 5)
>>> c={'one':1,'two':2,'three':3}
>>> fun2(**c)
<class 'dict'>
{'one': 1, 'two': 2, 'three': 3}
一个星号(*)用来打包和解包系列,两个星号(**)用来打包和解包字典。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值