# 函數銷燬# 全局函數銷燬# 從新定義同名函數# 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__)