【Python备忘录】Python函数中*的使用

简介

萌新看代码的时候经常看到使用Python函数的时候用到*,以前用c或者java的时候从来没看过,看的是一脸懵逼,因此差了一点资料理解了一下使用方法,记录在此用以备忘。


一、在定义函数时参数使用*

1.1 定义时形参使用单*

举个例子:def test(*args):
意思是把传入的参数都装在元组args中。
调用时使用test(1,2,3)就相当于传入了一个args=(1,2,3)的元组。

1.2 定义时形参使用双*

举个例子:def test(**kwargs):
kwargs是关键字参数的意思,意思是把传入的参数转换为字典kwargs中。
调用时使用test(a=1,b=‘two’,c=‘c3’)相当于传入了一个kwargs={‘a’:1,‘b’:‘two’,c:‘c3’}的字典。


二、在调用函数时参数使用*

首先定义一个函数 def test(a,b,c,d):

2.1 调用时实参使用单*

举个例子:test(*args)

意思是把元组args中每个元素当作位置参数传入函数中。
假设args=(1,2,3,4)
调用时使用test(*args)就相当于test(a=1,b=2,c=3,d=4)

2.2 调用时实参使用双*

举个例子:test(**kwargs)

意思是把字典kwargs中每个元素当作关键字参数传入函数中。
假设kwargs={‘a’:1,‘b’:2,‘c’:3,‘d’:4}
调用时使用test(**kwargs)相当于test(a=1,b=2,c=3,d=4)
注释:根据我的理解,如果调用时kwargs中关键字和定义时不完全一致的话会报错,但是不知道是不是这样,希望各位大佬给个解答。


三、个人小结

一般比较常见的还是作为形参使用*和**,前者用作取元组,后者用于取字典。
作为实参使用时,前者用来传元组,后者用来传字典。
作为形参时,**必须放在最后面,否则会把定义的别的关键字给吞了。
最后放一段代码帮助理解。

def test(a,*args,**kwargs):
    print a
    print args
    print kwargs
 
test(1,2,3,d='4',e=5)

输出结果:
1
(2, 3)
{'e': 5, 'd': '4'}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值