# 函数销毁# 全局函数销毁# 从新定义同名函数# del语句删除函数对象# 程序结束时def foo(xyz=[], u='abc', z=123): xyz.append(1) return xyzprint(id(foo))def foo(xyz=[]): xyz.append(1) return xyzprint(id(foo)) # foo函数id变化,上一个foo函数等待垃圾回收del fooprint(id(foo))# 局部函数销毁# 从新在上级做用域定义同名函数# del语句删除函数对象# 上级做用域销毁时def foo(xyz=[], u='abc', z=123): xyz.append(1) def inner(a=10): pass print(id(inner)) def inner(a=100): print(xyz) print(id(inner)) return innerbar = foo()print(id(foo), id(bar), foo.__defaults__, bar.__defaults__)del barprint(id(foo), id(bar), foo.__defaults__, bar.__defaults__)