目录
描述
del是Python关键字之一,它表示删除Python对象。在Python的世界中,一切都是由对象组成的。因此可以使用del删除由对象组成的一切。
语法
del <object>
名称 | 描述 |
---|---|
object | 待删除的对象 |
使用示例
删除函数
在Python中,函数也是对象。使用del可以删除函数的声明:
def hi():
print("hi")
if __name__ == '__main__':
hi()
# output: hi
del hi
hi()
# NameError: name 'hi' is not defined
del也可以删除类中的方法。对于在使用del之前就实例化的对象,也会一并删除对象中相应的方法:
class Hi(object):
def hi(self):
print("hi")
if __name__ == '__main__':
h = Hi()
h.hi()
# output: hi
del Hi.hi
h.hi()
# AttributeError: 'Hi' object has no attribute 'hi'
也可以选择删除对象中的属性,效果与上例相同。
class Hi(object):
def hi(self):
print("hi")
if __name__ == '__main__':
h1 = Hi()
h2 = Hi()
h1.hi()
# output: hi
h2.hi()
# output: hi
del h2.hi
h1.hi()
# AttributeError: hi
# 虽然删除的是h2对象中的hi方法,但是会影响Hi类中的全部对象。
如果在使用del之前将要被删除的函数或方法赋值给其它变量,那么即使使用del语句删除掉相应的函数和方法,被赋值的变量依旧可以正常使用:
class Hi(object):
def hi(self):
print("hi")
def hello():
print("hello")
if __name__ == '__main__':
h = Hi()
fun = h.hi
hel = hello
del Hi.hi
del hello
fun()
# output: hi
hel()
# # output: hello
删除类
使用del删除类不会影响该类实例化对象的使用。但是删除后就无法继续实例化新的对象了。
class Hi(object):
def hi(self):
print("hi")
if __name__ == '__main__':
h = Hi()
del Hi
h.hi()
# output: hi
h2 = Hi()
# NameError: name 'Hi' is not defined
删除列表元素
del语句可以删除列表内指定索引的元素:
if __name__ == '__main__':
demo = ["Python", "Java", "Golang"]
del demo[1]
print(demo)
# output: ['Python', 'Golang']
如果要删除的索引超界,那么会抛出IndexError:
if __name__ == '__main__':
demo = ["Python", "Java", "Golang"]
del demo[3]
print(demo)
# IndexError: list assignment index out of range
删除字典中的键值对
del语句可以删除字典内的键值对:
if __name__ == '__main__':
demo = {"A": "a", "B": "b"}
del demo["B"]
print(demo)
# output: {'A': 'a'}
删除不存在的key会引发KeyError:
if __name__ == '__main__':
demo = {"A": "a", "B": "b"}
del demo["C"]
# KeyError: 'C'