python3.7學習筆記25-裝飾器
我們在之前的學習中其實接觸過很多的裝飾器。它本質其實就是乙個函式。
def demo7(func):
print('模擬裝飾器')
func()
def demo8():
print('簡單裝飾器的應用')
test = demo7(demo8)
test()
/usr/local/bin/python3.7 /users/zhonglinglong/pycharmprojects/whole_world/臨時檔案.py
模擬裝飾器
簡單裝飾器的應用
process finished with exit code 0
它的標準寫法如下。@稱為語法糖。@demo7 等價與上面的 test = demo7(demo8)。只不過更加簡潔。
def demo7(func):
print('模擬裝飾器')
func()
@demo7
def demo8():
print('簡單裝飾器的應用')
demo8()
/usr/local/bin/python3.7 /users/zhonglinglong/pycharmprojects/whole_world/臨時檔案.py
模擬裝飾器
簡單裝飾器的應用
process finished with exit code 0
如果原函式有乙個引數的話 則在裝飾函式中加入引數
def demo7(func):
print('模擬裝飾器')
func(msg)
@demo7
def demo8(msg):
print('簡單裝飾器的應用'+msg)
demo8('有引數的原函式')
/usr/local/bin/python3.7 /users/zhonglinglong/pycharmprojects/whole_world/臨時檔案.py
模擬裝飾器
簡單裝飾器的應用有引數的原函式
process finished with exit code 0
如果有幾個函式都想用這個裝飾器 然後每個函式的引數還不一樣該怎麼辦? 如果自定義函式那節還有印象的話。應該馬上可以想出解決辦法。因為本質上就是函式。所以可以使用不定長元組引數和關鍵字引數
import functools
def demo7(func):
@functools.wraps(func) # 保留原函式的元資訊(函式名稱等資訊) 這個可加可不加 對功能無影響
print('模擬裝飾器')
func(*args,**kwargs)
@demo7
def demo8(msg):
print('簡單裝飾器的應用'+msg)
demo8('有引數的原函式')
裝飾器函式本身也是可以定義引數
def demo6(m):
def demo7(func):
print(m)
print('模擬裝飾器')
func(*args,**kwargs)
return demo7
@demo6('裝飾器函式的引數')
def demo8(msg):
print('簡單裝飾器的應用'+msg)
demo8('有引數的原函式')
函式可以使用多個裝飾器
def demo6(m):
def demo7(func):
print(m)
print('模擬裝飾器6')
func(*args,**kwargs)
return demo7
def demo1(m):
def demo2(func):
print(m)
print('模擬裝飾器1')
func(*args,**kwargs)
return demo2
@demo1('裝飾器函式的引數1')
@demo6('裝飾器函式的引數6')
def demo8(msg):
print('簡單裝飾器的應用'+msg)
demo8('多個裝飾器')
/usr/local/bin/python3.7 /users/zhonglinglong/pycharmprojects/whole_world/臨時檔案.py
裝飾器函式的引數1
模擬裝飾器1
裝飾器函式的引數6
模擬裝飾器6
簡單裝飾器的應用多個裝飾器
process finished with exit code 0
裝飾器功能非常強大。一般用來列印日誌 快取 使用者登入等場景 Python3 7學習筆記03 輸入與輸出
python3.7學習筆記03 輸入與輸出。本文輸出。是指列印在編輯器的控制台。輸入是指在控制台上輸入值來執行程式 print 單行列印 print 列印1 列印2 3 for i in range 5 print i,end d python3.7 python3.exe d pythonproj...
python3 7學習之判斷閏年
閏年分為普通閏年和世紀閏年。普通閏年 能被4整除但不能被100整除的年份為普通閏年。如2004年就是閏年,1900年不是閏年 世紀閏年 能被400整除的為世紀閏年。如2000年是世紀閏年,1900年不是世紀閏年 用if語句巢狀實現 year int input 輸入乙個年份 if year 4 0 ...
Python3 7安裝部署
教你如何在 centos 7 下編譯安裝 python 3.7 與 python 2.7.5 共存。環境 centos 7.6 x64 一 安裝python 3.7 wget 如果沒有wget命令,可以使用命令安裝 yum y install wget 安裝依賴包,避免安裝過程 現的 zipimpo...