[Python基础] *args(用于位置参数)和**kwargs(用于关键字参数)

Posted by Chase Shen on 2022-01-23
Estimated Reading Time 1 Minutes
Words 478 In Total
Viewed Times

在Python中,*args**kwargs是用于函数定义中,以允许接收不确定数量的参数。这两个是专门的语法结构,用于处理那些在函数定义时不确定具体数量或名称的参数。

*args**kwargs的命名本身不是固定的,但前缀***是必须的,它们分别用于定义可变数量的位置参数和关键字参数。args和kwargs只是按照惯例使用的名称,您可以用其他任何有效的变量名来替换它们。

*args(用于位置参数):

  • *args允许函数接收任意数量的位置参数(不带关键字的参数)。
  • 它通常用于需要处理可变数量参数的情况。
  • 在函数内部,args是一个元组,包含了所有传递给函数的位置参数。

示例:

1
2
3
4
5
def function_with_args(*args):
for arg in args:
print(arg)

function_with_args(1, 2, 3) # 输出:1, 2, 3

**kwargs(用于关键字参数):

  • **kwargs允许函数接收任意数量的关键字参数(带有关键字的参数)。
  • 它通常用于参数的数量和属性在函数定义时不确定的情况。
  • 在函数内部,kwargs是一个字典,包含了所有通过关键字传递给函数的参数。

示例:

1
2
3
4
5
def function_with_kwargs(**kwargs):
for key, value in kwargs.items():
print(f"{key} = {value}")

function_with_kwargs(param1=1, param2=2) # 输出:param1 = 1, param2 = 2

组合使用*args**kwargs

  • 在同一个函数中可以同时使用*args**kwargs,以接收任意数量的位置参数和关键字参数。
  • 当使用这两者时,*args必须在**kwargs之前。
    示例:
1
2
3
4
5
6
7
def function_with_args_and_kwargs(*args, **kwargs):
for arg in args:
print(arg)
for key, value in kwargs.items():
print(f"{key} = {value}")

function_with_args_and_kwargs(1, 2, param1=3, param2=4)

输出将是:

1
2
3
4
1
2
param1 = 3
param2 = 4

*args**kwargs提供了极大的灵活性,使函数能够处理各种不同的参数配置。


如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !