Python中单星号(*)与双星号(**)运算符详解
本文详细解析Python中单星号(*)与双星号(**)的多种用法。单星号可表示乘号、字符串倍数重复,或在函数定义中接收任意数量参数为元组,在调用时对可迭代对象进行解包。双星号用于接收关键字参数并打包为字典。文章通过具体代码示例说明序列解包与关键字解包的差异及注意事项。
单星号(*)的基础运算与字符串重复
在Python中,单星号(*)首先最基本的用途是作为数学运算中的乘号。
其次,当单星号作用于字符串与整数时,它表示重复操作,即生成该字符串的指定倍数。例如:
def T(msg,time=1):
print((msg+' ')*time)
T('hi',3)
执行上述代码后的打印结果(此处演示打印3次):
hi hi hi
单星号在函数定义与调用中的解包应用
除了基础运算,单个星号在函数定义与调用中还有重要应用。
(1)在函数定义中,如使用 *parameter 形式,该参数用于接收任意数量的位置参数,并将它们打包放入一个元组中。
>>> def demo(*p):
print(p)
>>> demo(1,2,3)
(1, 2, 3)
(2)在函数调用时,如果实参是列表、元组、集合、字典或其他可迭代对象,可以在其前面加上 * 符号。
例如对元组 *(1,2,3) 进行解包,解释器会自动将其元素依次传递给对应的单变量参数,此时传递的参数个数必须与函数定义中的形参个数严格对应相等。
>>> def d(a,b,c):
print(a,b,c)
>>> d(1,2,3)
1 2 3
>>> a=[1,2,3]
>>> b=[1,2,3]
>>> c=[1,2,3]
>>> d(a,b,c)
[1, 2, 3] [1, 2, 3] [1, 2, 3]
>>> d(*a)
1 2 3
需要注意:序列解包的操作必须在处理关键参数(keyword arguments)和 **参数之前进行。
以上内容涵盖了Python中单星号的主要应用场景,希望能为读者提供清晰的学习参考,也欢迎大家持续关注本站获取更多技术分享。
双星号(**)处理关键字参数
双星号(**)主要用于处理关键字参数。例如 **parameter 用于接收类似关键字赋值的多个实参,并将它们放入一个字典中(即把该函数的参数转换为字典格式)。
>>> def demo(**p):
for i in p.items():
print(i)
>>> demo(x=1,y=2)
('x', 1)
('y', 2)
以上内容涵盖了Python中双星号的主要应用场景,希望能为读者提供清晰的学习参考,也欢迎大家持续关注本站获取更多技术分享。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













