当前位置: 首页 > news >正文

python中*args, **kwargs到底是什么意思

*args (可变位置参数)

*args 用于收集任意数量的位置参数。当你在函数定义中使用 *args 时,它会将所有传递给函数的额外位置参数收集到一个**元组(tuple)**中。

工作原理:

  • *运算符:这里的星号 (*) 是一个解包(unpacking)操作符。
  • args: args 只是一个约定俗成的名称,你可以用任何其他合法的变量名替代(例如 *numbers, *items),但 args 是最常见的用法。

什么情况下使用 *args?

  • 当你不知道函数会被传递多少个位置参数时。
  • 当你需要编写一个可以接受不同数量输入的通用函数时(例如一个求和函数,可以对任意数量的数字求和)。

**kwargs (可变关键字参数)

**kwargs 用于收集任意数量的关键字参数。当你在函数定义中使用 **kwargs 时,它会将所有传递给函数的额外关键字参数收集到一个**字典(dictionary)**中。字典的键是参数名,值是参数值。

工作原理:

  • ** 运算符: 这里的双星号 (**) 也是一个解包操作符,专门用于字典。
  • kwargs: kwargs 也是一个约定俗成的名称,代表 “keyword arguments”(关键字参数),你可以用其他合法变量名替代,但 kwargs 是最常见的用法。

什么情况下使用 **kwargs?

  • 当你需要一个函数能够处理不确定数量的配置选项或命名参数时。
  • 当你编写一个需要灵活接收各种属性的API或框架时(例如,一个创建HTML元素的函数,可以接受任意的HTML属性)。

其实上面讲了那么多,具体看着一份代码就能很清晰的了解:

def complex_function(a, b, *args, p1="default", **kwargs):print(f"a: {a}")print(f"b: {b}")print(f"args: {args}")print(f"p1: {p1}")print(f"kwargs: {kwargs}")complex_function(10, 20, 30, 40, x=100, y="test", p1="custom_value", status="active")
# 输出:
# a: 10
# b: 20
# args: (30, 40)
# p1: custom_value
# kwargs: {'x': 100, 'y': 'test', 'status': 'active'}complex_function(1, 2, "hello", p1="changed")
# 输出:
# a: 1
# b: 2
# args: ('hello',)
# p1: changed
# kwargs: {}
http://www.lryc.cn/news/577034.html

相关文章:

  • Mac使用VMware安装win11使用Origin绘图巨卡解决办法
  • linux运维学习第10周
  • 智能新纪元:大语言模型如何重塑电商“人货场”经典范式
  • 条件概率:不确定性决策的基石
  • Oracle 递归 + Decode + 分组函数实现复杂树形统计进阶(第二课)
  • 中介者模式 - Flutter中的通信指挥中心,告别组件间混乱对话!
  • 怎样学习STM32
  • Springboot 集成 SpringBatch 批处理组件
  • 2.安装Docker
  • 力扣第87题-扰乱字符串
  • 如何通过自动化减少重复性工作
  • Vue中的v-if与emit事件传递:一个常见陷阱分析
  • 推荐几本关于网络安全的书
  • FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南
  • 6月28日记
  • Re:从0开始的 空闲磁盘块管理(考研向)
  • H3C-路由器交换机-中继
  • 用户行为序列建模(篇六)-【阿里】DSIN
  • DeepSeek五子棋游戏与AI对战
  • 【unity游戏开发——网络】网络游戏通信方案——强联网游戏(Socket长连接)、 弱联网游戏(HTTP短连接)
  • WebRTC(十三):信令服务器
  • Qt Windows下编译动态库生成的.a文件是什么?
  • 新生代潜力股刘小北:演艺路上的璀璨新星
  • Function Calling与MCP的区别
  • Ubuntu开放mysql 3306端口
  • X-Search:Spring AI实现的AI智能搜索
  • SpringMVC实战:从配置到JSON处理全解析
  • AlphaFold3安装报错
  • SpringCloud系列(40)--SpringCloud Gateway的Filter的简介及使用
  • cron 表达式 0 10 0/2 * * ? 的含义