python - 为什么删除分配给另一个变量的变量不会影响新变量?
问题描述
如果我做li = [1,2,3]
,然后做a = li
,a
是分配给li
,对不对?但是,当我这样做del li
然后 printa
时,它仍然显示[1,2,3]
. 当我这样做li.append(4)
并打印时a
,为什么会显示[1,2,3,4]
?
我知道a
没有复制li
(因为该.copy()
方法用于此),但为什么a
仍会显示li
曾经拥有的价值?
解决方案
del
不删除变量。del
只删除name,垃圾收集器将(在它自己的时间)搜索没有被任何东西引用的变量,并正确地释放它们的内存。
在这种情况下,您分配名称a
以引用该名称所引用的同一变量li
。当您使用.append()
时,它会修改变量,并且所有引用该变量的名称都将能够看到更改。当您del li
删除 nameli
时,它不会删除a
仍然引用变量的 name 。因此,变量不会被释放和删除。
推荐阅读
- reactjs - 如何在 Typescript 中使用 Immer
- ios - 删除 iOS 配置文件时会发生什么
- python - 如何将 xlwings 功能分配给按钮
- exchangewebservices - 如何在 C# 中使用 EWS 获取日历文件夹的所有属性
- java - ElasticSearch append API 在 java 中可用吗?
- azure - 在 Linux VM 上运行 Azure Batch 命令时权限被拒绝
- wpf - WPF 以编程方式创建事件触发器
- node.js - 使用nodejs将浏览文件按钮添加到MS bot框架的自适应卡
- r - Tobit 模型,带有白色标准错误的回归
- python-3.x - tkinter TypeError:函数采用 1 个位置参数,但给出了 2 个()