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)