Python Args 和 Kwargs

Python args and kwargs Made Easy

*args**kwargs 可能看起来令人畏惧,但事实是它们并不难理解,并且有能力为您的函数带来极大的灵活性。

阅读文章 Python *args 和 **kwargs 变得简单 以获得更深入的介绍。

Args 和 Kwargs

*args**kwargs 允许您在调用函数时传递不确定数量的位置参数和关键字参数。

# 定义一个接受任意数量的位置参数和关键字参数的函数
def some_function(*args, **kwargs):
    pass

# 使用任意数量的位置参数调用
some_function(arg1, arg2, arg3)

# 使用任意数量的关键字参数调用
some_function(key1=arg1, key2=arg2, key3=arg3)

# 使用位置参数和关键字参数调用
some_function(arg, key1=arg1)

# 或者不带任何参数调用
some_function()

Python 惯例

*args**kwargs 是惯例。它们不是解释器强制要求的,但被 Python 社区认为是良好的实践。

args

您可以通过 args 变量访问位置参数

# *args 将位置参数收集到一个元组中
def some_function(*args):
    print(f'Arguments passed: {args} as {type(args)}')

# 传递多个参数 - 它们将被收集到 args 元组中
some_function('arg1', 'arg2', 'arg3')
Arguments passed: ('arg1', 'arg2', 'arg3') as <class 'tuple'>
测验

登录后即可答题并追踪学习进度

*args 将参数收集到什么数据类型中?
A. 列表 (A list)
B. 元组 (A tuple)
C. 字典 (A dictionary)
D. 集合 (A set)

kwargs

关键字参数通过 kwargs 变量访问:

# **kwargs 将关键字参数收集到一个字典中
def some_function(**kwargs):
    print(f'keywords: {kwargs} as {type(kwargs)}')

# 传递关键字参数 - 它们将被收集到 kwargs 字典中
some_function(key1='arg1', key2='arg2')
keywords: {'key1': 'arg1', 'key2': 'arg2'} as <class 'dict'>
测验

登录后即可答题并追踪学习进度

**kwargs 将参数收集到什么数据类型中?
A. 列表 (A list)
B. 元组 (A tuple)
C. 字典 (A dictionary)
D. 集合 (A set)

相关链接