在 Python 中,**(双星号)和 *(星号)在参数中有什么作用?
在创建函数时,单个星号 (*) 用于接收并允许用户传递任意数量的位置参数。同样,双星号 (**) 用于接收任意数量的关键字参数。
当我们不确定要传递给函数多少个参数且这些参数不是关键字时,可以使用单个星号 (*)。
双星号 (**kwargs) 可用于传递关键字,当我们不知道将传递多少个关键字参数给函数时,这些关键字参数将存储在一个名为 kwargs 的 dict 中。
在定义函数时
让我们创建一个可以接收任意数量的位置参数的 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 错误。
解包可迭代对象
使用星号运算符作为参数的另一种方法是在调用函数时解包参数可迭代对象。
示例
在这里我们可以看到,单个星号 '*' 运算符用于将数据结构(如 列表 或 元组)解包成参数。
def sample_function(a, b, c):
print(a, b, c)
l = [1, 2, 3]
sample_function(*l)
输出
1 2 3
示例
以上示例说明了双星号 '**' 运算符如何将 字典 解包成关键字参数。
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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP