Python學習之路 day 11 裝飾器

2021-08-22 01:29:13 字數 1783 閱讀 4205

一.裝飾器相關

1. 什麼是裝飾器

器:指的是具備某一功能的工具

裝飾:指的是為被裝飾器物件新增新功能

裝飾器就是用來為被裝飾器物件新增新功能的工具

注意:裝飾器本身可以是任意可呼叫物件,被裝飾器的物件也可以是任意可呼叫物件

2. 為何要用裝飾器

開放封閉原則:封閉指的是對修改封閉,對擴充套件開放

裝飾器的實現必須遵循兩大原則:

1. 不修改被裝飾物件的源**

2. 不修改被裝飾器物件的呼叫方式

裝飾器的目標:就是在遵循1和2原則的前提下為被裝飾物件新增上新功能

3. 怎麼用裝飾器

import time

def index():

print('welcome to index page')

time.sleep(3)

4. 裝飾器公升級版

import time

def index():

print('welcome to index page')

time.sleep(3)

def home(name):

print('welcome %s to home page' %name)

time.sleep(2)

return 123

# index=timmer(index)

index()

二.  裝飾器是語法糖

裝飾器的語法糖:在被裝飾物件正上方單獨一行寫@裝飾器的名字

執行原理:

python直譯器一旦執行到@裝飾器的名字,就會呼叫裝飾器,然後將被裝飾函式的記憶體位址當作引數

傳給裝飾器,最後將裝飾器呼叫的結果賦值給原函式名

import time

def timmer(func): #func=最原始那個home函式的內位址

start=time.time()

res=func(*args,**kwargs) #最原始那個home函式的內位址('egon')

stop=time.time()

print('run time is %s' %(stop - start))

return res

@timmer #index=timmer(index)

def index():

print('welcome to index page')

time.sleep(3)

@timmer #home=timmer(home)

def home(name):

print('welcome %s to home page' %name)

time.sleep(2)

return 123

index()

print(res)

import time

index()

三. 練習\認證功能裝飾器

import time

四.  疊加多個裝飾器

import time

import time

'''五.  有參裝飾器

import time

current_user=

# 補充:所有的資料型別的值自帶布林值,可以直接當作條件去用,只需要記住布林值為假的那一些值即可(0,空,none)

@login('file')

def home(name):

print('welcome %s to home page' %name)

time.sleep(2)

return 123

python學習 day11下午

單例模式,可以用在資料庫,這樣只建立一條管道即可 class a def new cls,args,kwargs if not hasattr a,xiaogou cls.xiaogou object.new cls return cls.xiaogou def init self,name sel...

python 學習筆記 day11 裝飾器

現在有乙個需求,我們想計算一段程式執行的時間,可以採用time模組的time函式 def func print 哈哈哈哈 func 我們可以這樣做 import time deffunc start time.time 函式體內 執行開始的時間 time.sleep 0.02 因為這個程式太簡單,執...

MATLAB學習打卡Day11

書寫格式 plot3 x,y,z x,y,z為同維的向量或矩陣,有關線的規範的設定與二維的線性圖完全相同。書寫格式 bar3 y bar3 x,y bar3 width bar3 y 繪製向量y的每乙個元素的條形圖,立體條形的幅值代表元素值,條形圖的下標為向量y的序列。若y為矩陣,則產生代表矩陣每一...