Python是一門強大的編程語言,它支持很多高級編程特性,其中之一就是閉包。閉包可以讓我們在Python中實現一些非常有用的功能,比如實現一個可以記錄日志的函數。
def logger(func): def wrapper(*args, **kwargs): result = func(*args, **kwargs) print('Log:', func.__name__, args, kwargs, result) return result return wrapper @logger def my_func(a, b): return a + b my_func(1, 2)
代碼中我們定義了一個logger方法,這個方法接收一個函數作為參數,并返回一個嵌套函數wrapper。wrapper函數中我們記錄了函數的名稱、參數以及返回值。這樣我們就可以在原函數執行的時候,利用logger函數記錄函數的執行情況。
在上面的代碼中,我們使用了Python的裝飾器語法來應用logger方法。@logger表示應用logger方法對my_func進行修飾。因此,當我們調用my_func函數的時候,實際上是調用了由logger方法返回的wrapper函數。
通過使用閉包和Python的裝飾器語法,我們可以方便地為任何函數添加日志記錄功能。這個功能非常有用,可以幫助我們很快地發現和解決程序中的問題。