当前位置: 首页 > 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]

相关文章:

  • 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)
  • 韩国总统选举白热化进行中,中韩青年民间交流促两国友好往来
  • 特朗普与普京开始进行电话会谈,稍后还将致电泽连斯基
  • 戛纳参赛片《爱丁顿》评论两极,导演:在这个世道不奇怪
  • 铜川耀州窑遗址内违法矿场存在多年,省市区文物部门多次处罚叫停仍在生产
  • 解放日报:“感觉全世界人都在上海买买买”
  • 乌称苏梅州一公共汽车遭俄军袭击,致9死4伤