**(双星号) 和 * (单星号) 用于Python中的参数有什么作用
在创建函数时,单个星号 (*) 用于接受和允许用户传递任意数量的位置参数。同样,双星号 (**) 用于接受任意数量的关键字参数。
当我们不确定要传递给函数的参数数量以及那些不是关键字的参数时,可以使用单个星号 (*)。
双星号 ( kwargs **
) 用于传递关键字参数,当我们不知道要传递给函数的关键字参数的数量时,这些参数将存储在 字典 类型的 kwargs
中。
在定义函数时
让我们创建一个 Python函数 ,它可以接受任意数量的位置参数。
示例
创建一个Python函数,可以接受任意数量的位置参数。
def function(*args):
result = 0
for ele in args:
result+=ele
return result
print(function(1,2,3,4,5,6,7))
print(function(10,10,10))
print(function(1))
输出
28
30
1
示例
让我们看看双星号操作符如何创建一个带有任意数量关键字参数的Python函数。
def function(**args):
result = 0
for k, v in args.items():
result+=v
return result
print(function(a=1,b=2,c=3,d=4))
print(function(i=10,j=100))
输出
10
110
以上函数是为了传递任意数量的关键字参数而创建的,如果我们在调用函数时没有提及关键字,即function(10,100),那么它将引发TypeError错误。
解包可迭代对象
使用星号操作符作为参数的另一种方式是在调用函数时解包参数可迭代对象。
示例
在这里我们可以看到单个星号’*’操作符被用来解包数据结构,例如 list 或 tuple 成为参数。
def sample_function(a, b, c):
print(a, b, c)
l = [1, 2, 3]
sample_function(*l)
输出
1 2 3
Example
上述的例子说明了双星号 ‘**’ 运算符将一个字典解包成关键字参数。
def sample_foo(a, b):
return 'a({}) + b({}) = {}'.format(a,b,a+b)
d = {'b': 100, 'a':10}
print(sample_foo(**d))
输出
a(10) + b(100) = 110