python之裝飾器篇

2022-07-19 09:24:11 字數 1679 閱讀 2330

一.基本裝飾器

基本裝飾器的作用:

在不改變原函式的基礎上, 通過裝飾器, 給原函式新增某些功能

實現方法:

在原函式上加

@裝飾器名字

其中@叫做語法糖

定義裝飾器

第一層函式傳入引數(用於傳入原函式)

第二層使用原函式的同時, 加入需要新增的功能

第一層函式要返回第二層函式名

整個函式形成閉包

import

time

defruntime(func):

def start =time.time()

for i in range(100):

func()

end =time.time()

print("

程式執行時間為 {}

".format((end - start)/1000.0))

return

@runtime

defhello():

print("

hello world")

hello()

二.三層裝飾器

現在需要在裝飾器的基礎上, 呼叫 @裝飾器 的時候傳入引數

就需要在原有的裝飾器的基礎上, 在外層寫乙個函式, 從而又形成閉包的結構

import

time

def runtime(msg="

預設值"

):

defdecorator(func):

def start =time.time()

for i in range(100):

func()

end =time.time()

print

(msg)

print("

程式執行時間為 {}

".format((end - start) / 1000.0))

return

return

decorator

@runtime(

"hello()")

defhello():

print("

hello world")

hello()

三.完善引數傳遞

在之前的裝飾器中, 由於原函式可能存在不同種類的引數, 可能有各種各樣的返回值, 所以要進行一下兩點修改

1 將裝飾器實際執行函式的引數設定為(*, **)的形式

2 改函式需要return 原函式

import

time

def log(msg="

預設值"

):

defdecorator(func):

print(func.__name__

, msg)

return func(*args, **kwargs)

return

return

decorator

@log(

"hello()")

defhello():

print("

hello world")

hello()

python學習篇之 簡易裝飾器

一 裝飾器簡介 1 什麼是裝飾器 裝飾器本質就是函式,為其他函式新增附加功能 2 原則 1 不修改被修飾函式的源 2 不修改被修飾函式的呼叫方式 開放封閉原則,程式上線後,就不應該更改內部源 3 裝飾器知識儲備 裝飾器 高階函式 函式巢狀 閉包 高階函式 1 函式接收的引數是乙個函式名 2 函式的返...

python裝飾器介紹 Python之裝飾器簡介

python函式式程式設計之裝飾器 1.開放封閉原則 簡單來說,就是對擴充套件開放,對修改封閉。在物件導向的程式設計方式中,經常會定義各種函式。乙個函式的使用分為定義階段和使用階段,乙個函式定義完成以後,可能會在很多位置被呼叫。這意味著如果函式的定義階段 被修改,受到影響的地方就會有很多,此時很容易...

python 找到裝飾器 Python之裝飾器

裝飾器本質上就是乙個python函式,他可以讓其他函式在不需要做任何 變動的前提下,增加額外的功能,裝飾器的返回值也是乙個函式物件。裝飾器的作用 在不改變原函式及原函式的執行的情況下,為原函式增加一些額外的功能,比如列印日誌 執行時間,登入認證等等。乙個簡單的裝飾器 import time def ...