'''
閉包的特殊用途:
可以在不修改現有功能原始碼的前提下,增加新的功能
'''import time
defwrite_log
(func)
:# 定義乙個記錄日誌的函式:將訪問事件以及訪問的函式名寫入到檔案中(log.txt)
try:
file
=open
('log.txt'
,'a'
, encoding=
'utf-8'
)file
.write(func.__name__)
# 寫入函式名
file
.write(
'\t'
)file
.write(time.asctime())
# 寫入時間
# time.asctime([t])轉換由 gmtime()或localtime()所返回的表示時間的元組或struct_time為以下形式的字串:
# 『sun jun 20 23:21:05 1993』。
# 如果未提供t,則會使用localtime()所返回的當前時間。
file
.write(
'\n'
)except exception as e:
print
(e)finally
:file
.close(
)def
func_out
(func)
:# 定義閉包函式。外部函式變數為func
deffunc_in
(*args,
**kwargs)
:# 內部函式中呼叫寫入日誌的函式。使用帶*的可變引數,靈活傳遞引數。」args」是個元組,』kwargs』是個字典
# 新增日誌功能
write_log(func)
# 呼叫外部函式的變數
func(
*args,
**kwargs)
return func_in # 返回內部函式名,注意無括號。有括號表示返回值,無括號表示函式
@ func_out
deffunc1()
:print
('功能1,無引數'
)@ func_out
deffunc2
(a):
print
(f'功能2,有乙個引數:'
)@ func_out
deffunc3
(a, b)
:print
(f'功能3,有兩個引數:和'
)func1(
)func2(
'李煥英'
)func3(
'晴明'
,'博雅'
python閉包詳解 例項演示
python閉包詳解 例項演示 閉包 這個詞語相信大多數學過程式設計的同學並不陌生,但是有時候理解起來還是有一定難度。先看定義 閉包是由函式和與其相關的引用環境組合而成的實體。比如參考資源中就有這樣的的定義 在實現深約束時,需要建立乙個能顯式表示引用環境的東西,並將它與相關的子程式 在一起,這樣 起...
python閉包的例項詳解
1 在外部函式中定義內部函式,內部函式包含訪問外部函式。即使外部函式的生命週期結束後,內部函式仍然可以訪問外部函式變數。2 外部函式的返回值是內部函式本身。def outer cheer hello def inner name return cheer name return inner if n...
python 閉包 python 閉包
閉包 因為python中函式也可以當作物件,所以如果出現當我們返回乙個函式,而該函式含有外部變數的時候就形成了閉包。閉包的特點 是個巢狀函式 可以獲得非區域性的變數 將函式當作物件返回 看乙個例子會更易理解 def make printer msg msg hi there def printer ...