python3中*星号操作符的使用

我们经常会在参数传递的时候看到有些参数的前面会有*星号.或者**双星号,两者类似地有以下两个作用:

  • 在函数声明时使用,使得函数可接收可变参数(任意个数的参数)
  • 在函数调用时使用,用于解压参数列表。 具体如下:

1. 对于第一个作用:

* 单星号将参数以元祖的形式导入:

1
2
3
4
5
6
7
def foo(p1,*p2):
print(p1)
print(p2)
foo(1,2,3)
# 打印结果:
#1
#(2,3)

而**双星号,则是将参数以字典的形式导入:

1
2
3
4
5
6
7
def bar(p1,*p2):
print(p1)
print(p2)
bar(1,a=2,b=3)
# 打印结果:
#1
#{'a':2, 'b':3}

2. 对于第二个作用:
* 单星号将元祖解压为对应参数,而**双星号,则是将字典解压为对应参数。

1
2
3
4
5
6
7
8
9
10
def foo(a,b,c):
print(a,b,c)

p1=(1,2,3)
p2={'a':1,'b':2,'c':3}
foo(*p1)
foo(**p2)
#运行结果:
#1 2 3
#1 2 3
分享到