python 裝飾函式

2021-08-20 08:59:30 字數 1638 閱讀 2696

此文的最後乙個蛋疼的例子可以幫助理解這個概念,

# # 錯誤寫法

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