Python 中 * 和 ** 的用途
Najwa Riyaz
2023年1月30日
本文解释了 Python 中 *
和 **
的用途。
在 Python 中,我们使用单星号 (*
) 和双星号 (**
) 来表示可变数量的参数。
我们可以通过以下任一方式在 Python 函数中传递任意数量的参数。
- 位置参数(
*
) - 关键字参数(
**
)
Python 中*
的定义
在 Python 中使用符号 *
允许函数的位置参数/参数数量可变。
请按照以下示例进行操作。
def function_singleasterix(*someargs):
for i in someargs:
print(i)
现在,带有 list
或 tuple
的驱动程序代码如下。
listdata = ["Alex", "Tom", "John", "Alice"]
function_singleasterix(listdata)
输出:
['Alex', 'Tom', 'John', 'Alice']
如果你不希望用户知道参数的名称,请使用仅位置参数。
例如,建议在 API 中使用仅位置变量——如果参数名称被修改,这可以避免在 API 发生任何变化时损坏。
Python 中**
的定义
在 Python 中使用符号 **
允许对函数使用可变数量的关键字参数/参数。请注意,后面的参数必须是映射(字典键值对)项,而不是元组或列表。
按照下面的示例代码。
def function_doubleasterix(**keywordargs):
print("The keys in the kwargs dicionary are -", keywordargs.keys())
print("The values in the kwargs dicionary are -", keywordargs.values())
print("--The key value assignment in the 'keywordargs' dictionary are as follows--")
for key, value in keywordargs.items():
print("%s == %s" % (key, value))
在上面的示例中,keywordargs
与下面的程序中的字典相关联。
function_doubleasterix(SNo001="Alex", SNo002="Tom")
输出:
The keys in the 'keywordargs' dicionary are - dict_keys(['SNo001', 'SNo002'])
The values in the 'keywordargs' dicionary are - dict_values(['Alex', 'Tom'])
--The key value assignment in the 'keywordargs' dictionary are as follows--
SNo001 == Alex
SNo002 == Tom
在上面的示例中,**keywordargs
提供关键字参数作为字典键值对。
*
和 **
在 Python 函数调用中的使用
符号*
和**
也用于函数调用。使用它们将可变数量的参数传递给使用以下任一方法的函数。
- 一个列表 -
*
- 一个元组 -
*
- 一本字典 -
**
以下是你可以遵循的几个示例。
使用变量 list
作为输入调用函数。使用*
如下
varlist = ["Tom", "John", "Alice"]
functiondef(*varlist)
使用变量 dictionary
作为输入调用函数。使用**
如下
vardict = {"a": "Tom", "b": "John", "c": "Alice"}
functiondef(**vardict)
使用变量 tuple
作为输入调用函数。使用*
如下
vartuple = ("Tom", "John", "Alice")
functiondef(*vartuple)
以上所有情况的输出是:
SNo1 = Tom
SNo2 = John
SNo3 = Alice