需要理解的三個方面:
1、函式即"變數「
2、高階函式
a 把函式名當做實參傳給另乙個函式(在不修改被裝飾函式源**的情況下進行功能擴充套件)
b 返回值中包含函式名(不修改函式的呼叫方式)
3、巢狀函式:函式裡面用def宣告另乙個函式
高階函式+巢狀函式=》裝飾器
一、未使用裝飾器:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
def timmer(func):
def deco(*args,**kwargs):
time_start = time.time()
func(*args,**kwargs)
time_end = time.time()
print('耗費時間——%s' % (time_end-time_start))
return deco
def test1():
time.sleep(1)
print('test 1')
test1 = timmer(test1)
test1()
返回:
test 1
耗費時間——1.0010290145874023
二、使用裝飾器**如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time
def timmer(func):
def deco(*args,**kwargs):
time_start = time.time()
func(*args,**kwargs)
time_end = time.time()
print('耗費時間——%s' % (time_end-time_start))
return deco
@timmer
def test1():
time.sleep(1)
print('test 1')
#test1 = timmer(test1)
test1()
裝飾器整理
現在,我們已經明白了裝飾器的原理。接下來,我們還有很多事情需要搞清楚。比如 裝飾帶引數的函式 多個裝飾器同時裝飾乙個函式 帶引數的裝飾器和類裝飾器。def foo func 接收的引數是乙個函式名 def bar x,y 這裡需要定義和被裝飾函式相同的引數 print 這裡是新功能.新功能 func...
python裝飾器 Python 裝飾器
簡言之,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。一般而言,我們要想拓展原來函式 最直接的辦法就是侵入 裡面修改,例如 這是我們最原始的的乙個函式,然後我們試圖記錄...
python基礎知識整理 裝飾器
最簡裝飾器 def deco func def wrap args,kwargs return func args,kwargs return wrap deco def foo a,b return a b原理 對比被裝飾前後的foo.name 和foo.doc from functools im...