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

Python默认参数详解

Python中,函数的默认参数Default Arguments)允许你在定义函数时为某些参数指定一个默认值。调用函数时,如果未提供这些参数的值,它们将自动使用默认值。这一特性可以简化函数调用,提高代码的灵活性。


1.基本语法

python

defgreet(name,message="Hello"):
print(f"{message},{name}!")
  • 参数name没有默认值,调用时必须传入。
  • 参数message有默认值"Hello",调用时可以省略。

python

greet("Alice")#输出:Hello, Alice!
greet("Bob","Hi")#输出:Hi, Bob!

2.默认参数的位置规则

所有带默认值的参数必须出现在不带默认值的参数之后,否则会引发语法错误:

python

deffunc(a=1,b):#错误:SyntaxError
pass
deffunc(a,b=1):#正确
pass

3.默认值的求值时机

默认参数的值只在函数定义时计算一次,而不是每次调用时重新计算。这会导致一个常见的陷阱:当默认值是可变对象(如列表、字典)时,多次调用可能共享同一个对象

陷阱示例

python

defadd_item(item,lst=[]):
lst.append(item)
returnlst
print(add_item(1))# [1]
print(add_item(2))# [1, 2] ←居然保留了上一次的结果!
print(add_item(3,[]))# [3] ←显式传入新列表,正常

这是因为默认列表[]在函数定义时被创建,所有调用如果不提供lst参数,都会使用同一个列表对象。

避免陷阱的方法

通常的做法是:将默认值设为None,在函数内部创建新对象

python

defadd_item(item,lst=None):
iflstisNone:
lst=[]
lst.append(item)
returnlst
print(add_item(1))# [1]
print(add_item(2))# [2] ←每次得到新列表
http://www.jsqmd.com/news/493365/

相关文章:

  • VS Code 聊天功能深度解析:从激活到精通,解锁AI编程新范式
  • 从保护环设计到势垒高度设置:Silvaco仿真肖特基二极管的3个关键陷阱
  • Task2:ESP32代码学习和基础API需求
  • CLIP-GmP-ViT-L-14在嵌入式设备端的轻量化部署探索
  • 如何用Python实现三角函数公式的自动计算与验证
  • CTF流量分析新选择:3个核心功能让你轻松应对网络安全挑战
  • 从零开始:tModLoader全面指南 - 打造专属泰拉瑞亚模组世界
  • 原本该有一篇文章发出来
  • 从零学 Linux:从发行版到包管理器,一篇吃透基础要点
  • SiameseAOE中文-base参数详解:Prompt+Text构建思路与schema定义规范
  • SecGPT-14B开源模型落地:适配国产化GPU环境的网络安全垂直大模型实践
  • STM32F4实战:CoreMark跑分从移植到优化的完整指南(附常见问题排查)
  • 如何3分钟实现抖音视频批量下载:douyin-downloader完整指南
  • cmux多智能体管理工具
  • 阿里云MQTT连接失败?工程师亲授的PubSubClient避坑指南(附完整参数配置)
  • LSTM与BERT模型在序列标注任务上的分割效果对比
  • dll文件缺失,DirectX 运行库修复工具,一键完成dll缺失修复、解决99.99%程序故障、闪退、卡顿等常见问题,轻松解决
  • 用SDXL 1.0做个人作品集:快速生成多种风格的高质量插画与概念图
  • OFA模型轻量化部署:针对边缘设备的优化思路与探索
  • 从雷诺运输定理到高维PBE:流体动力学中的物质守恒法则
  • Local AI MusicGen批量生成任务的优化策略
  • LangChain4j实战:构建企业级RAG问答系统的核心步骤与避坑指南
  • AI头像生成器GPU算力方案:Qwen3-32B在A10/A100/L4卡上的部署性能对比
  • DIY—一拖四串口调试助手
  • CW1173(ChipWhisperer-Lite)板卡修复成功步骤总结
  • 手把手教你用阿里云镜像在Ubuntu上离线安装OpenSSH(最新版)
  • 共模电感差共模插入损耗的仿真优化与实际电路匹配验证
  • Z-Image-Turbo-辉夜巫女建筑可视化效果图:从概念草图到逼真渲染的AI辅助流程
  • 3D Face HRN与YOLOv8结合应用:智能视频中的人脸3D重建技术
  • DeepChat与卷积神经网络结合:多模态情感分析系统构建