Python中如何检查执行del命令删除列表后列表是否已被删除
验证del命令删除列表变量是否生效的方法
首先明确:执行del 变量名时,删除的是当前作用域下变量名和对应对象的绑定关系,而非直接销毁列表对象本身。原有代码抛出错误的核心原因是del users执行后,users这个变量名已经从当前命名空间中移除,直接引用该变量名就会抛出UnboundLocalError(局部作用域)或NameError(全局作用域),和列表是否为空完全无关。
内置检查方法
不需要引入额外模块,直接通过Python内置的命名空间查询字典即可判断变量是否存在:
- 局部作用域内的变量,通过
locals()判断 - 全局作用域内的变量,通过
globals()判断
正确实现代码:
users = ["u1", "u2", "u3"] del users # 检查变量名是否仍存在于当前局部命名空间 if "users" in locals(): print("变量存在,del未生效") else: print("变量已成功删除,del生效")
如果是全局作用域定义的users,将判断条件里的locals()替换为globals()即可。
注意:如果有其他变量同时指向同一个列表对象,
del users只会移除users这个名字的绑定,列表本身不会被垃圾回收,依然可以通过其他绑定的变量访问,示例如下:users = [1, 2, 3] temp = users # 另一个变量指向同一个列表 del users print(temp) # 正常输出[1,2,3],列表对象依然存在
内容的提问来源于stack exchange,提问作者Shivam
相关产品推荐
相关产品推荐

