网站首页 > 技术文章 正文
在 Python 里,函数能够定义默认参数,在调用函数时若未提供该参数的值,就会使用默认值。不过,使用默认可变参数时得格外留意,因为可变对象(像列表、字典这类)在函数定义时就已创建,并且在多次调用函数时会持续存在。
问题示例
以下代码展示了使用默认可变参数可能出现的问题:
python
Bash
def add_item(item, my_list=[]):
my_list.append(item)
return my_list
print(add_item(1))
print(add_item(2))
在上述代码中,定义了add_item函数,其默认参数my_list是一个空列表。当首次调用add_item(1)时,会向空列表里添加元素1,接着返回该列表。然而,当第二次调用add_item(2)时,my_list并不会重新初始化为空列表,而是会接着使用之前的列表,所以会添加元素2到已有元素1的列表里。
输出结果
plaintext
Bash
[1]
[1, 2]
避坑方法
要避免这种问题,可将默认参数设为None,然后在函数内部对其进行检查,若为None,就创建一个新的可变对象。以下是改进后的代码:
python
def add_item(item, my_list=None):
if my_list is None:
my_list = []
my_list.append(item)
return my_list
print(add_item(1))
print(add_item(2))
改进后的输出结果
plaintext
[1]
[2]
总结
在 Python 里使用默认可变参数时,要牢记可变对象只会在函数定义时创建一次,并且会在多次调用函数时持续存在。为了避免意外状况,推荐把默认参数设为None,然后在函数内部创建新的可变对象。
资料整理不易,请点赞,收藏,加关注!
猜你喜欢
- 2025-06-12 新手学Python避坑,学习效率狂飙! 二、Python 代码缩进
- 2025-06-12 告别Ctrl+C/V!这个Python神器让Excel自动化效率提升500倍
- 2025-06-12 提升 Python 效率,尽在 Pydash —— 高效数据处理的终极工具包
- 2025-06-12 【团队效率提升】Python-PyWebIO介绍
- 2025-06-12 新手学Python避坑,学习效率狂飙! 三、Python 数据类型
- 2025-06-12 如何用Python处理大数据?3个小技巧助你提升效率(建议收藏)
- 2025-06-12 纯Python构建精美UI!MonsterUI让前端开发效率飙升
- 2025-06-12 用好这几个Python高阶函数!效率翻倍
- 2025-06-12 每天一个 Python 库:pandas 办公利器,数据处理效率翻倍!
- 2025-06-12 「Python+Pandas」自动化处理Excel的“分分合合”,非常实用
- 272℃Python短文,Python中的嵌套条件语句(六)
- 271℃python笔记:for循环嵌套。end=""的作用,图形打印
- 269℃PythonNet:实现Python与.Net代码相互调用!
- 264℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 264℃Python实现字符串小写转大写并写入文件
- 123℃原来2025是完美的平方年,一起探索六种平方的算吧
- 104℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 99℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- Python数据分析实战-dataframe分组提取每一组的首条记录
- 如何使用Python将多个excel文件数据快速汇总?
- 「Python数据分析」Pandas进阶,使用groupby分组聚合数据(二)
- 还在熬夜合并30个Excel 3个案例,带你用Python玩转Excel高阶操作
- python数据分析实战:pandas分组聚合-自定义聚合函数
- Python 知识点 #31 - 分组和聚(python分层聚类)
- 人生苦短,自学 python——pandas 的分组操作
- 利用Python进行数据分组/数据透视表
- 超实用!用Python快速实现数据分组统计与透视表
- Python 之 Pandas:数据分组聚合统计的魔法秘籍
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)