一.基本裝飾器
基本裝飾器的作用:
在不改變原函式的基礎上, 通過裝飾器, 給原函式新增某些功能
實現方法:
在原函式上加
@裝飾器名字
其中@叫做語法糖
定義裝飾器
第一層函式傳入引數(用於傳入原函式)
第二層使用原函式的同時, 加入需要新增的功能
第一層函式要返回第二層函式名
整個函式形成閉包
importtime
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()
二.三層裝飾器
現在需要在裝飾器的基礎上, 呼叫 @裝飾器 的時候傳入引數
就需要在原有的裝飾器的基礎上, 在外層寫乙個函式, 從而又形成閉包的結構
importtime
def runtime(msg="
預設值"
):
defdecorator(func):
def start =time.time()
for i in range(100):
func()
end =time.time()
(msg)
print("
程式執行時間為 {}
".format((end - start) / 1000.0))
return
return
decorator
@runtime(
"hello()")
defhello():
print("
hello world")
hello()
三.完善引數傳遞
在之前的裝飾器中, 由於原函式可能存在不同種類的引數, 可能有各種各樣的返回值, 所以要進行一下兩點修改
1 將裝飾器實際執行函式的引數設定為(*, **)的形式
2 改函式需要return 原函式
importtime
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 ...