*args 与 **kwargs

*args 与 **kwargs

*args

在 Python 中,*args 是一个特殊的语法,用于表示函数定义或调用时的可变参数列表(variable argument list)。这里的星号(*)表示 “任意数量”,而 args 是 “arguments”(参数)的缩写。在函数调用时,可以通过 * 操作符将序列(列表、元组、字符串等)中的元素解包为位置参数。

作用:

  1. 接收任意数量的位置参数: 在函数定义中使用 *args 可以捕获传递给函数的额外位置参数,这些参数被存储在一个元组(tuple)中
  2. 提高函数的灵活性: 允许函数接受不确定数量的参数,使得函数可以更灵活地被重用
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
4

my_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
hobby

people_dict = {'name': 'sijiali', 'age': 17, 'hobby': 'sleep'}
my_func(kwargs=people_dict)  # 这里是一个关键字参数
---------
{'kwargs': {'name': 'sijiali', 'age': 17, 'hobby': 'sleep'}}
kwargs

people_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
  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值