对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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。