python中一个星号*与两个星号**的用法与差别

本文详细介绍了Python函数中单星号(*)和双星号(**)的使用方法,包括如何利用*args收集多余位置参数为元组,如何使用**kwargs收集关键字参数为字典,以及如何解压参数列表。

单星号(*):
作用一
*agrs 将参数以元组形式导入

def test1(param1,param2,*param3):
	print(param1)
	print(param2)
	print(*param3)
test1(1,2,3,4,5)

输出值为

1
2
(3,4,5)

作用二
解压参数列表
若直接执行以下代码

def foo(bar,lee):
	print (bar,lee)
l = [1,2]
foo(l)

则会报错

foo() missing 1 required positional argument: 'lee'

使用*后

def foo(bar,lee):
	print (bar,lee)
l = [1,2]
foo(*l)

输出值

1 2

双星号():**
**kwargs 将参数以字典的形式导入

def test2(param1,param2,**param3):
	print(param1)
	print(param2)
	print(param3)
test2(1,2,a=3,b=4,c=5)

返回值为:

1
2
{'a': 3, 'b': 4, 'c': 5}

这两个用法可以同时出现在一个函数中:例如

 def foo(a, b=10, *args, **kwargs):
        print a
        print b
        print args
        print kwargs
 foo(1, 2, 3, 4, e=5, f=6, g=7)

返回值

1
2
3 4
{'e': 5, 'g': 7, 'f': 6}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值