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

Python函数默认参数为什么不能用可变对象

def f(val=[]):
    val.append(1)
    return val

print(f(), f())

输出:

[1, 1] [1, 1]

这是因为Python函数默认参数如果是可变对象始终是同一个,修改一个其它也会跟着变。所以不建议默认参数用可变对象,防止出现意外的值。

至于为什么不是[1],[1,1],是因为两个f()执行完了再print的,此时两个f()返回的都是同一个列表。如果分成两个print才是[1],[1,1]

def f(val=[]):
    val.append(1)
    return val

print(f())
print(f())

输出:

[1]
[1, 1]
http://www.dtcms.com/a/75294.html

相关文章:

  • uniapp vue3项目定义全局变量,切换底部babar时根据条件刷新页面
  • Spring中Bean的自动装配
  • 电脑型号与尺寸
  • 大数据学习拓展——Minio安装与使用
  • Unity Shader - UI Sprite Shader之简单抠图效果
  • ollama docker设置模型常驻显存
  • 流量分析实践
  • 【Python 算法零基础 1.线性枚举】
  • 使用htool工具导出和导入Excel表
  • springboot学习(自定义starter)
  • GO语言的GC(垃圾回收)原理
  • 探索可变参数提升不变学习以增强分布外泛化能力
  • Android ARouter的详细使用指南
  • 京东云DeepSeek-R1模型一键部署教程,基于智算GCS【成本2元】
  • Ansible 如何使用 Playbook 批量部署应用?
  • Unity WebGL项目访问时自动全屏
  • vue 加密解密
  • 基于PMU的14节点、30节点电力系统状态估计MATLAB程序
  • AndroidStudio下载安装,环境部署以及常见问题解决教程(亲测)
  • 游戏立项时期随笔记录(1)
  • MySql数据库(表数据的增、删、改操作)8
  • mysql5.x和mysql8.x查看和设置隔离级别
  • VSCode C/C++ 环境搭建指南
  • JS逆向案例-通达OA Office Anywhere 2019 的前端密码加密逆向分析
  • SiC/GaN器件测试新选择:MHO5000如何破解高频开关噪声难题?
  • 【MySQL】第十八弹---数据库管理基础:视图操作与用户权限管理指南
  • 2025“钉耙编程”中国大学生算法设计春季联赛(2)题解
  • 第二章:GPT的发展史
  • 2025最新版Windows通过GoLand远程连接Linux构建Go项目保姆级教学
  • 自然语言处理|让AI更聪明:如何用百科知识喂饱语言模型