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

函数定义、调用、参数分类(位置/关键字/默认参数)避坑详解

博客导语

函数是代码复用的核心,90%新手入门都会踩默认参数、参数混用顺序的坑。本篇从零讲解函数底层执行逻辑,区分四类基础参数的传参规则、混用顺序、生产报错案例,解决日常开发80%参数传参异常。


一、函数基础:定义与调用底层逻辑

1.1 标准语法

# 函数定义 def 函数名(参数列表): """函数文档注释""" 函数体代码 # 函数调用 函数名(传入参数)

1.2 底层执行流程

Python解释器读取def语句时,不会执行内部代码,只会在内存中创建函数对象、分配内存地址;只有调用函数时,才会开辟独立函数栈帧,执行内部代码,调用结束后销毁栈帧。这也是为什么函数必须先定义、后调用,颠倒顺序直接抛出NameError。


二、三大基础参数全解析+易错点

2.1 位置参数(必选参数)

按照参数定义顺序一一对应传参,数量、顺序必须完全匹配,多传少传都会直接报错。是开发最常用的参数类型。

def user_info(name,age): print(f"姓名:{name},年龄:{age}") # 正确:位置一一对应 user_info("张三",20) # 错误:参数数量不匹配 user_info("李四")

2.2 关键字参数

通过形参名=实参传参,无需遵循定义顺序,适合参数数量多、容易记混顺序的场景。硬性规则:关键字参数必须放在位置参数之后,不能颠倒

user_info(age=22,name="王五") # 纯关键字,顺序随意 user_info("赵六",age=25) # 位置+关键字混用,合法 # user_info(age=25,"赵六") 报错:位置参数不能放关键字参数后

2.3 默认参数

定义时直接给形参赋值,调用时不传参自动使用默认值。硬核避坑:默认参数必须放在非默认参数后方

def user_info(name,age=18): print(f"姓名:{name},年龄:{age}") user_info("小明") # 不传age,默认18 user_info("小红",20) # 手动覆盖默认值

三、高频致命坑:可变类型默认参数

全网最高频面试坑:默认参数为列表、字典等可变对象时,只会在函数定义时创建一次,后续调用会复用同一块内存,导致数据累加。

# 错误写法 def add_num(num_list=[]): num_list.append(1) print(num_list) add_num() # [1] add_num() # [1,1] 不符合预期 # 正确写法:默认值用None,内部初始化可变对象 def add_num(num_list=None): if num_list is None: num_list = [] num_list.append(1) print(num_list)

四、参数混用强制顺序(死记)

位置参数 > 默认参数 > 关键字参数,违反顺序百分百语法报错

http://www.jsqmd.com/news/1014604/

相关文章:

  • SillyTavern性能调优最佳实践:从延迟优化到内存管理的完整指南
  • 深圳全屋定制支持免费上门量尺出方案的公司有哪些?空间装配前置服务的学术评估与规范筛选
  • 法考考试时间安排及科目|时间表|资料已整理
  • 2026年成都二手小吃车靠谱商家TOP5盘点及避坑指南 - 互联网科技品牌测评
  • Horizon-GS 部署全攻略:从数据集下载到三维重建实战
  • 2026年北京工伤律师推荐怎么选?关键看这三点不踩雷 聚赋推荐 - 本地品牌推荐
  • WPinternals:突破Windows Phone安全边界的专业技术工具
  • 接口服务里的 A/B Test:从灰度开关到可信实验
  • 可变参数*args与**kwargs底层原理、混用顺序、生产实战
  • 2026年北京交通事故律师推荐:5位深耕赔偿的实战大律 - 本地品牌推荐
  • 影刀RPA进阶教程_API调用的进阶实战RESTful鉴权分页与错误处理
  • Citra 3DS模拟器终极指南:在PC上完美重现掌机体验的完整解决方案
  • 遗传算法实战:N皇后问题的Python完整实现与调优
  • 美术用品厂主要分布在哪里?国内主要产区概览
  • Dockerfile 深度实战:从指令底层原理到生产级镜像构建的艺术
  • Python 高手编程系列三十四:抽象语法
  • trace.moe完整教程:构建你自己的AI动漫场景搜索引擎
  • N皇后遗传算法实战:Python编码、适应度设计与调试避坑指南
  • 2026年6月合肥中高职贯通学校概览,实力院校汇总,职高/机电一体化专业学校/新能源汽车专业学校,中高职贯通学校找哪家 - 品牌推荐师
  • Python 高手编程系列十四:抽象语法
  • 怎么用 AI 预测世界杯:别问冠军是谁,先问概率怎么来
  • 终极Git可视化工具:GitAhead让你的版本控制一目了然
  • 函数返回值、变量作用域、global关键字深度拆解
  • 从GPT-1到GPT-4o:一个普通开发者眼中的模型进化与实战选择指南
  • 5大核心价值矩阵解析:LinkSwift如何重塑九大网盘下载体验
  • 相框厂主要分布在哪里?主要产区横向对比
  • 3分钟搭建OBS RTSP服务器:obs-rtspserver插件完整教程
  • 别再乱选模板了!HR推荐这2个在线简历制作网站,一键套用+真实案例,轻松斩获面试邀约! - HR小张
  • 北京莫瑶教育零基础转行AI工程师(按学习难度分级)|2026就业向全程学习指南 - 教育信息网
  • 智能图层革命:如何用AI算法3分钟完成复杂图像的分层重构