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

可变参数*args与**kwargs底层原理、混用顺序、生产实战

博客导语

大部分开发者只会照抄*args、**kwargs,不懂解包原理、混用边界、传参限制。本篇从元组/字典解包底层拆解,覆盖函数定义、函数调用双向解包,附带接口封装、装饰器传参两大实战场景。


一、*args:不定长位置可变参数

1.底层原理

args全称arguments,*代表位置解包:接收所有多余的位置参数,自动打包为元组tuple。元组不可变,保证参数安全。

def calc_sum(*args): print(args,type(args)) return sum(args) calc_sum(1,2,3,4) # (1,2,3,4) <class 'tuple'>

2.调用侧单星解包

调用函数时,*可将列表、元组、集合打散为独立位置参数传入,解决批量传参问题。

data = [10,20,30] calc_sum(*data) # 等价于calc_sum(10,20,30)

二、**kwargs:不定长关键字可变参数

1.底层原理

kwargs全称keyword arguments,**代表关键字解包:接收所有多余的关键字参数,自动打包为字典dict。只能接收key=value格式参数。

def user_detail(**kwargs): print(kwargs,type(kwargs)) user_detail(name="小李",gender="男") # {'name': '小李', 'gender': '男'} <class 'dict'>

2.调用侧双星解包

调用时**打散字典,转为关键字参数,仅支持字典类型

user = {"name":"小张","age":24} user_detail(**user)

三、所有参数强制混用顺序(面试必考)

完整参数排序:位置参数 > 默认参数 > *args > **kwargs,顺序不可逆,Python官方语法硬性规定

def func(a,b=10,*args,**kwargs): pass

四、生产级实战场景

  1. 通用工具函数封装:不知道用户传入多少参数,统一用可变参数兜底

  2. 接口请求封装:统一封装requests请求,兼容任意请求头、请求参数

  3. 装饰器万能传参:适配任意被装饰函数,不用修改参数结构


五、新手误区纠正

1.args、kwargs只是变量名,可以改名,*和**才是核心标识;

2.*args不能接收关键字参数,**kwargs不能接收位置参数;

3.二者不能交叉传参

http://www.gsyq.cn/news/1526412.html

相关文章:

  • trace.moe完整教程:构建你自己的AI动漫场景搜索引擎
  • 3分钟搭建OBS RTSP服务器:obs-rtspserver插件完整教程
  • 5分钟快速上手猫抓Cat-Catch:浏览器资源嗅探神器的终极指南 [特殊字符]
  • 烘焙食品厂主要分布在哪里?国内主要产区对比
  • 哪家快递最便宜?比价后我选它 - 快递物流资讯
  • 告别混乱!用Ba-IdCode-U插件统一获取UniAppX中的设备ID(OAID/AndroidID/IMEI)
  • CS149ParallelComputing_NotesAssignmentsd
  • python核心基础,这关于基于Moveltg加 Ros2实战Python编程基础实课
  • 2026年厦门正规靠谱婚恋服务/婚介门店TOP6排行大盘点:严肃婚恋平台专项测评 - 互联网科技品牌测评
  • 别再死记硬背了!用一张图搞懂HDLC、X.25、帧中继和ATM的演进关系
  • Python 高手编程系列三千五百零二:处理错误与速率限制
  • 终极指南:使用DDrawCompat在现代Windows上完美运行经典游戏
  • 用Python开发自动化脚本:提高工作效率的利器
  • HashCheck:Windows资源管理器的极速文件哈希校验神器
  • 13ft Ladder终极指南:三步轻松绕过任何付费墙,免费阅读所有付费文章
  • 企业级 Agent 产品:知识库权限隔离与多级审批流的架构设计
  • 如何用Mac Mouse Fix让普通鼠标在macOS上获得专业级体验:终极指南
  • 2026东莞中央空调回收避坑拆机扣费报价缩水怎么防 - 广东再生资源回收
  • 创业团队技术选型:容器编排与资源调度的成本-效率优化
  • 2026广州变压器回收油浸vs干式差价与铜铁分离算价 - 广东再生资源回收
  • 终极指南:免费让老款Mac焕发新生,体验最新macOS系统
  • 构建可扩展的后端系统:架构设计的核心考量
  • 2026年6月国内做得好的X-Ray智能点料机品牌推荐,AI自动插件机/波峰焊机,X-Ray智能点料机厂家口碑推荐 - 品牌推荐师
  • 手机高效使用技巧实战指南
  • Matplotlib的AnnotationBbox太难用?手把手教你实现PyQt图表悬停提示与光标线(避坑指南)
  • 影刀RPA新手教程_魔法指令入门用自然语言生成自动化流程
  • 飞书接入智能体
  • Joy-Con Toolkit:开源手柄调试与个性化定制解决方案
  • 电脑新手必备:从装机到日常维护的实用指南
  • SpringBoot项目从fastjson1.x升级到fastjson2.x,Redis序列化配置怎么改?(附完整代码)