对Python3 * 和 ** 运算符详解
在Python中,*和**具有语法多义性,具体来说是有四类用法。
1.算数运算
*代表乘法
**代表乘方
>>>2*5 10 >>>2**5 32
2.函数形参
*args和**kwargs主要用于函数定义。
你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道,函数使用者会传递多少个参数给你,所以在这个场景下使用这两个关键字。其实并不是必须写成*args和**kwargs。*(星号)才是必须的.你也可以写成*ar和**k。而写成*args和**kwargs只是一个通俗的命名约定。
python函数传递参数的方式有两种:
位置参数(positionalargument)
关键词参数(keywordargument)
*args与**kwargs的区别,两者都是python中的可变参数:
*args表示任何多个无名参数,它本质是一个tuple
**kwargs表示关键字参数,它本质上是一个dict
如果同时使用*args和**kwargs时,必须*args参数列要在**kwargs之前。
>>>deffun(*args,**kwargs):
...print('args=',args)
...print('kwargs=',kwargs)
...
>>>fun(1,2,3,4,A='a',B='b',C='c',D='d')
args=(1,2,3,4)
kwargs={'A':'a','B':'b','C':'c','D':'d'}
使用*args
>>>deffun(name,*args):
...print('你好:',name)
...foriinargs:
...print("你的宠物有:",i)
...
>>>fun("Geek","dog","cat")
你好:Geek
你的宠物有:dog
你的宠物有:cat
使用**kwargs
>>>deffun(**kwargs):
...forkey,valueinkwargs.items():
...print("{0}喜欢{1}".format(key,value))
...
>>>fun(Geek="cat",cat="box")
Geek喜欢cat
cat喜欢box
3.函数实参
如果函数的形参是定长参数,也可以使用*args和**kwargs调用函数,类似对元组和字典进行解引用:
>>>deffun(data1,data2,data3):
...print("data1:",data1)
...print("data2:",data2)
...print("data3:",data3)
...
>>>args=("one",2,3)
>>>fun(*args)
data1:one
data2:2
data3:3
>>>kwargs={"data3":"one","data2":2,"data1":3}
>>>fun(**kwargs)
data1:3
data2:2
data3:one
4.序列解包
序列解包往期博客有写过,这里只列出一个例子,序列解包没有**。
>>>a,b,*c=0,1,2,3 >>>a 0 >>>b 1 >>>c [2,3]
以上这篇对Python3*和**运算符详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。