本文主要是介绍*args 与 **kwargs,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
*args 与 **kwargs
- *args
- **kwargs
*args
在 Python 中,*args
是一个特殊的语法,用于表示函数定义或调用时的可变参数列表(variable argument list)。这里的星号(*)表示 “任意数量”,而 args
是 “arguments”(参数)的缩写。在函数调用时,可以通过 * 操作符将序列(列表、元组、字符串等)中的元素解包为位置参数。
作用:
- 接收任意数量的位置参数: 在函数定义中使用
*args
可以捕获传递给函数的额外位置参数,这些参数被存储在一个元组(tuple)中 - 提高函数的灵活性: 允许函数接受不确定数量的参数,使得函数可以更灵活地被重用
def my_func(*args): # 接收任意数量的位置参数,这些位置参数都会被存入 args 元组print(args)for arg in args:print(arg)my_func(1, 2, 3, 4) # 将任意数量的位置参数存入 args 元组
---------
(1, 2, 3, 4)
1
2
3
4my_func([1, 3, 5]) # [1, 3, 5] 是一个位置参数,被存入 args 元组
---------
([1, 3, 5],)
[1, 3, 5]my_func(*[1, 3, 5]) # * 表示解包,即将序列(列表、元组、字符串等)中的元素解包为位置参数,这些位置参数会被存入 args 元组;等价于 my_func(1, 3, 5)
---------
(1, 3, 5)
1
3
5
**kwargs
在 Python 中,**kwargs
是一个常用的语法,用于表示函数调用时的关键字参数(keyword arguments)。其中,**
表示解包(unpacking),kwargs
是一个缩写,代表 “keyword arguments”。
当在函数定义中看到 **kwargs
时,它表示函数可以接受任意数量的关键字参数,并将它们作为字典接收。这使得函数可以非常灵活地接受不同的参数。
在函数调用中使用 **kwargs
时,它允许你传递任意数量的命名参数,这些参数在函数内部可以作为一个字典来访问。
def my_func(**kwargs): # 接收任意数量的关键字参数,这些关键字参数都会被存入 kwargs 字典print(kwargs)for arg in kwargs:print(arg)my_func(name='sijiali', age=17, hobby='sleep') # 将任意数量的关键字参数存入 kwargs 字典
---------
{'name': 'sijiali', 'age': 17, 'hobby': 'sleep'}
name
age
hobbypeople_dict = {'name': 'sijiali', 'age': 17, 'hobby': 'sleep'}
my_func(kwargs=people_dict) # 这里是一个关键字参数
---------
{'kwargs': {'name': 'sijiali', 'age': 17, 'hobby': 'sleep'}}
kwargspeople_dict = {'name': 'sijiali', 'age': 17, 'hobby': 'sleep'}
my_func(**people_dict) # ** 表示解包,即将字典中的键值对解包为关键字参数,这些关键字参数会被存入 kwargs 字典;等价于 my_func(name='sijiali', age=17, hobby='sleep')
---------
{'name': 'sijiali', 'age': 17, 'hobby': 'sleep'}
name
age
hobby
这篇关于*args 与 **kwargs的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!