整理Python裝飾器

2021-08-02 14:00:27 字數 1318 閱讀 7493

需要理解的三個方面:

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...