Python3中*和**的用法有何不同?老男孩Python培训机构
在学习python过程中,大家对*和**这两个运算符应该都不陌生,是两个比较常见的算术运算符。那么你知道Python3中*和**运算符的用法是什么吗?以下是详细的内容介绍。
在python中,*和**具有语法多义性,具体来说是有四类用法。
1、算数运算
* 代表乘法
** 代表乘方
>>>2 * 5
//10
>>>2 ** 5
//32
2、函数形参
*args和**kwargs主要用于函数定义。
你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道,函数使用者会传递多少个参数给你,所以在这个场景下使用这两个关键字。其实并不是必须写成*args和**kwargs。*才是必须的,你也可以写成*ar和**K。而写成*args和**kwargs只是一个通俗的命名约定。
python函数传递参数的方式有两种:
位置参数(positional argument)
关键词参数(keyword argument)
*args与**kwargs的区别,两者都是python中的可变参数:
*args表示任何多个无名参数,它本质是一个tuple。
**kwargs表示关键字参数,它本质上市一个dict。
如果同时使用*args和**kwargs时,必须*args参数列要在**kwargs之前。
def pt(*args,**kwargs)
print('a:',args, 'k:',kwargs)
pt(5,10, 'args='6, 'kwargs='9)
a:(5,10),k:{'args='6, 'kwargs='9}
3、函数实参
它们两个除了用作算数之外还有一个形式就是用作函数的实参,格式为*args和**kwargs。其中*args是一个元组类型,代表多个匿名参数;**kwargs是一个字典类型,代表关键词参数,示例如下:
def pt(info,info1)
print('info:',info)
print('info1:',info1)
args = (5,10) # 解引用
pt(*args) # 参数传递
info:5,info1:10
kwargs={'info1:'10, 'info:'5}
pt(**kwargs)
info:10,info1:5
4、序列解包
序列解包只需要用到*,序列解包没有**。
x,*y=5,10,15
x=5
y=[10,15]
老男孩教育是Python培训领域的专家,2012年就开展了Python培训,是行业较早的Python培训机构,积累了大量的Python培训教学经验,并能全局把控企业用人指标,科学的制定Python教学课程体系,满足5-8年职业生涯需求,让学员轻松拿下高薪职位!
注意:吐槽知乎网只是一个问答与文章免费发布平台,所有信息均有会员免费发布,不产生金钱交易,如果你有资金往来,请及时通过电话与对方联系,调查清楚,确认无误在选择,否则造成你的损失,由自己承担,本平台概不负责,谢谢!