python一个*和两个**代表什么意思???

有时可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。
一个星号*的变量args会存放所有未命名的变量参数,args为元组;
两个星号**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。
例如:

def add(a,b,*args,**kwargs):
	print("a =",a)
	print("b =",b)
	# *args 代表传入的为元组类型
	print("args =",args)
	# **kwargs 代表传入的为字典类型
	print("kwargs =",kwargs)
	for key,value in kwargs.items():
		print(key," = ",value)


add(1,2,3,4,5,6,m=7,n=8,p=9)

输出信息:
a = 1
b = 2
args = (3, 4, 5, 6)
kwargs = {‘m’: 7, ‘n’: 8, ‘p’: 9}
m = 7
n = 8
p = 9
注意另一种传入参数的写法:

def add(a,b,*args,**kwargs):
	print("a =",a)
	print("b =",b)
	# *args 代表传入的为元组类型
	print("args =",args)
	# **kwargs 代表传入的为字典类型
	print("kwargs =",kwargs)
	for key,value in kwargs.items():
		print(key," = ",value)

c = (3,4,5)
d = {"m":7,"n":8,"p":9}

add(1,2,*c,**d)
print("#"*30)
add(1,2,c,d)

输出如下,注意对比不同:
a = 1
b = 2
args = (3, 4, 5)
kwargs = {‘m’: 7, ‘n’: 8, ‘p’: 9}
m = 7
n = 8
p = 9
##############################
a = 1
b = 2
args = ((3, 4, 5), {‘m’: 7, ‘n’: 8, ‘p’: 9})
kwargs = {}

所以:当传入的是元组或者字典时,必须在前面加上星号(*)!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值