面试题 202301 什么是*args和 **kwargs?

一、什么是*args和 **kwargs?

1.1 为什么会有* args 和 ** kwargs?

允许函数接受不定数量的位置参数和关键字参数,使函数更加灵活和通用。
增加了函数的灵活性,使其能够处理不同数量和类型的参数,而不需要在函数定义时明确定义每个参数。

1.2 *args和**kwargs的用途是什么?

*args 处理参数数量不确定的情况,使函数更加灵活。
**kwargs 允许函数接收不定数量的关键字参数。
常用于处理哪些参数名称和数量不确定的情况,使函数更加通用。

1.3 *args是什么?

位置参数
args是 argument
args 有两部分构成为—— * 和args。这里的重点是
所以为了讲清楚
*args,我们要追根溯源——理解*的作用。
这里敲黑板,重点来了,这也是很多博客写的没有写到的地方:∗ *∗的作用,有2个—— 打包参数(pack)和拆分参数(unpack)!
————————————————
版权声明:本文为CSDN博主「千千Sama」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lllxxq141592654/article/details/81288741

args 参数列要在* kwargs 前面 【因为位置参数在关键字参数的前面。】

  • args 和 ** args 主要用于函数定义,你可以将不定数量的参数传递给一个函数。

这里不定的意思是: 预先并不知道,函数使用者会传递多少个参数给你,所在在这个场景下使用这两个关键字。 * args 是用来发送一个 非键值 的可变数量的参数列表给一个函数。

  • args表示任何多个无名参数,他本质上是一个tuple

所以若 *args 不是在最后,则需要在参数传入时,明确定义 *args后面的变量参数名

1.4 **kwargs是什么?

kwargs 是 keyword arguments的缩写。
在函数调用时,除了传递位置参数外,还可以传递以关键字(参数名)形式传递的参数。

** kwargs 表示关键字参数, 它本质上是一个 dict

键值对,key-value
函数里处理带名字的参数

1.5 *args与**kwargs的区别是什么?

*args 用于处理不定数量的位置参数,而 **kwargs 用于处理不定数量的关键字参数。它们都增加了函数的灵活性,使函数能够适应各种输入。选择使用哪个取决于函数的需求和设计。

参数类型和用途:
*args用于处理不定数量的位置参数
**kwargs 用于处理不定数量的关键字参数

参数传递方式
*args 位置参数必须按照它们在函数定义中的顺序传递给函数。
**kwargs 关键字参数可以按任意顺序传递给函数,因为它们与参数名称关联,这使得函数调用更加灵活。因为可以通过参数名来指定要传递的值。

参数捕获方式
*args 将位置参数捕获到一个元组中,可以在函数内部通过索引来房温各个参数的值
** kwargs 将关键字参数捕获到一个字典中,可以在函数内部通过参数名来访问各个参数的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向上Claire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值