Python 中 * 和 ** 的用途

Najwa Riyaz 2023年1月30日
  1. Python 中*的定义
  2. Python 中**的定义
  3. *** 在 Python 函数调用中的使用
Python 中 * 和 ** 的用途

本文解释了 Python 中 *** 的用途。

在 Python 中,我们使用单星号 (*) 和双星号 (**) 来表示可变数量的参数。

我们可以通过以下任一方式在 Python 函数中传递任意数量的参数。

  1. 位置参数(*)
  2. 关键字参数(**

Python 中*的定义

在 Python 中使用符号 * 允许函数的位置参数/参数数量可变。

请按照以下示例进行操作。

def function_singleasterix(*someargs):
    for i in someargs:
        print(i)

现在,带有 listtuple 的驱动程序代码如下。

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

相关文章 - Python Argument