讲师中心 微信公众号
AI工具推荐 视频效率加速

默认参数是什么_如何为函数设置默认值【教程】

夜宇姑娘_5011

夜宇姑娘_5011

发布时间:2026-01-25 13:25:02

|

554人浏览过

|

来源于php中文网

原创

Python函数默认参数在定义时求值一次,可变对象作默认值会导致状态污染;应使用None判空并重建对象,且无默认值参数须在有默认值参数之前。

默认参数是什么_如何为函数设置默认值【教程】

Python 函数的默认参数不是“可有可无的装饰”,而是直接影响调用逻辑和对象生命周期的关键机制;设错默认值(比如用 [] 或 {})会导致意外的跨调用状态污染。

默认参数在函数定义时就完成求值

Python 中所有默认参数表达式,在函数被定义(def 语句执行)时即求值一次,而不是每次调用时重新计算。这意味着可变对象(如列表、字典)作为默认值会持续复用。

  • 错误写法:def append_to(items=[], item="x"): items.append(item); return items —— 多次调用会累积元素
  • 正确写法:def append_to(items=None, item="x"): items = items or []; items.append(item); return items
  • 更推荐写法:def append_to(items=None, item="x"): items = [] if items is None else items; items.append(item); return items

None 是最安全的默认占位符

当需要“无值”语义且允许传入空列表、空字典等合法值时,None 是唯一可靠的选择。它不参与业务逻辑,只作存在性判断。

python学习
python学习

Python 编程学习助手 skill,面向零基础用户。 当用户表达以下意图时触发: - 学习 Python 基础概念(变量、数据类型、循环、函数、类等) - 请求 Python 练习题或测验 - 请求审查或调试 Python 代码 - 请求 Python 项目实战指导(爬虫、数据分析、Web 开发等入门项目) - 泛化表述如"教我 Python""我想学编程""Python 怎么写""帮我学 Python" 此 skill

下载
  • 避免用 False、0、"" 做默认值判据,它们可能是有效输入
  • 检查必须用 is None,而非 == None(虽通常等效,但风格和语义更准确)
  • 如果函数内部要修改默认对象,务必先做深拷贝或重建,例如:config = copy.deepcopy(default_config) if config is None else config

位置参数不能跟在带默认值的参数后面

Python 语法强制要求:所有不带默认值的形参必须出现在带默认值的形参之前。否则报 SyntaxError: non-default argument follows default argument。

  • 错误示例:def bad(a=1, b): pass → 直接语法错误
  • 正确顺序:def good(a, b=1, c="x"): pass
  • 混合使用时注意调用歧义:若同时支持位置与关键字传参,建议用 * 强制关键字参数(如 def f(x, *, y=1)),避免调用方误传顺序

默认参数看着简单,真正麻烦的是它把“定义时”和“运行时”的边界悄悄抹平了;只要记住“可变对象别直接当默认值”“没值就用 None 判”“顺序不能乱”,就能避开绝大多数坑。

热门AI工具

更多
PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

相关专题

更多
append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

598

2023.10.25

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

1476

2023.11.14

python中append的含义
python中append的含义

本专题整合了python中append的相关内容,阅读专题下面的文章了解更多详细内容。

2724

2025.09.12

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

357

2023.12.07

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

120

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

60

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

60

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

40

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

60

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn