Python是一種面向對象的編程語言,其中最基本的一種對象是函數。而函數中可以引用外部變量的對象被稱作閉包。
def outer(): message = "Hello" def inner(): print(message) return inner my_func = outer() my_func() # 輸出Hello
在上述代碼中,函數outer返回函數inner的引用。函數inner引用了變量message,而message并不是inner的局部變量,而是外部函數outer中的變量。當my_func()被調用時,內部函數inner引用外部變量message時,Python解釋器需要在函數對象之外查找變量。這種行為讓函數對象變得更加靈活。
此外,Python中的類也是一個閉包。類定義了一些屬性和方法,其中方法可以引用屬性作為參數。
class Car: def __init__(self, make, model, year): self.make = make self.model = model self.year = year def describe(self): return f"{self.make} {self.model} ({self.year})" my_car = Car("Tesla", "Model 3", 2021) print(my_car.describe()) # 輸出Tesla Model 3 (2021)
在上述代碼中,類Car引用了變量make、model和year,在其所有的實例對象中都是可用的。而類中定義的describe方法則引用了這些變量作為參數并進行了處理。
由于Python的閉包和類機制使得代碼的復用性更強,所以在開發Python應用程序時常常喜歡使用這些機制來提高代碼質量。同時,學習閉包和類也是成為Python高手的必經之路。