此文的最後乙個蛋疼的例子可以幫助理解這個概念,
# # 錯誤寫法
# def warp(fun):
# print("***")
# fun()
# print("***")
## @warp
# def myprint():
# print("lalala")
## myprint #這句並沒有卵用,刪掉這句也會有輸出,輸出是由@warp這句列印的
# print(myprint) #none
# 正確的寫法是在函式體中定義函式並返回函式
defwarp
(fun):
defwarpper
(): print("***")
fun()
print("***")
return warpper
@warp
defmyprint
(): print("lalala")
myprint ()
# -*- coding: utf-8 -*-
# 被裝飾的函式的引數
defwarp
(fun):
defwarpper
(x):
print("***")
fun(x)
print("***")
return warpper
@warp
defmyprint
(x):
print(x)
myprint("hello")
# 裝飾器引數,例子一
defwarp_select_long
(style):
if(style=="*"):
defwarp1
(fun):
defwarpper
(x):
print("***")
fun(x)
print("***")
return warpper
return warp1
else:
defwarp2
(fun):
defwarpper
(x):
print("===")
fun(x)
print("===")
return warpper
return warp2
# 裝飾器引數,例子二
defwarp_select_short
(c):
defwarp1
(fun):
defwarpper
(x):
print(c*3)
fun(x)
print(c*3)
return warpper
return warp1
@warp_select_short("=")
@warp_select_long("-")
defmyprint
(x):
print(x)
myprint("hello")
functools 和 類裝飾器的例子:
引數,返回值,類函式的例子:
python 函式裝飾 Python 函式裝飾器
無引數的 函式裝飾器 funa 作為裝飾器函式 def funa fn print sakura func a fn 執行傳入的fn引數 print sakura second return sakura return funa def funb print sakurab 返回結果為 sakura...
python 函式裝飾 Python 函式裝飾器
首次接觸到裝飾器的概念,太菜啦!python 裝飾器可以大大節省 的編寫量,提公升 的重複使用率。函式裝飾器其本質也是乙個函式,我們可以把它理解為函式中定義了乙個子函式。例如我們有這麼乙個需求,每次執行乙個函式後,需要知道這個函式執行了多長時間。一般情況下,我會這樣寫 defaccumulate n...
python函式裝飾函式 Python函式裝飾器
本文來介紹一下python的函式裝飾器,類裝飾器以後另開一文講。裝飾器可以看做是python中的乙個語法糖,基本的寫法示例如下 defdecorator func returnfunc decoratordeffunction print 666 decorator即是function的裝飾器,在f...