深入淺出理解python 裝飾器

2021-08-07 03:31:46 字數 1822 閱讀 7754

之前就了解到了裝飾器, 但是就會點皮毛, 而且對其呼叫方式感到迷茫,正好現在的專案我想優化,就想到了用裝飾器, 因此深入研究了下裝飾器.

先看下**:

import

time

#將函式作為引數傳入到此方法....

deftimeif(func):

def

print("

" %(arg))

start =time.clock()

func(arg)

end =time.clock()

print("

used: %s %s

" % (end-start, arg))

return

@timeif

deffoo(arg):

print("

in foo() %s

" %(arg))

if__name__ == '

__main__':

foo(

"hello

") #

表示執行foo函式....

我的疑惑就是明明return 的是乙個函式名,按道理來講,返回的就是乙個函式位址啊!我理解有問題?隨後上網查資料,又是閉包....但是我個人對它不感冒,隨後自己分析,總結出了一段程式,看完你就知道原因了.

程式:

#

coding=utf-8

#帶引數的函式 返回乙個函式位址就行....

deffunx(x):

deffuny():

return

x

return

funy

#不帶引數的函式....

deffunx1():

print("

呼叫函式funx1")

deffuny1():

print("

呼叫函式funy1")

return

funy1

if__name__ == '

__main__':

#print(funx(5)()) # 呼叫有引數的巢狀函式...

print(funx1()()) #

呼叫無引數的巢狀函式...

這和我們的裝飾器不像嗎?這就是我們的裝飾器!因此,我們可以按照上面的程式來理解,也就是說它是首先確定引數個數,隨後分別傳入的,下面,我們來改寫**:

#

coding=utf-8

import

time

#將函式作為引數傳入到此方法....

深入淺出理解索引

一 深入淺出理解索引結構 實際上,您可以把索引理解為一種特殊的目錄。sql server提供了兩種索引 聚集索引 clustered index,也稱聚類索引 簇集索引 和非聚集索引 nonclustered index,也稱非聚類索引 非簇集索引 下面,我們舉例來說明一下聚集索引和非聚集索引的區別...

深入淺出理解索引

一 深入淺出理解索引結構 實際上,您可以把索引理解為一種特殊的目錄。sql server提供了兩種索引 聚集索引 clustered index,也稱聚類索引 簇集索引 和非聚集索引 nonclustered index,也稱非聚類索引 非簇集索引 下面,我們舉例來說明一下聚集索引和非聚集索引的區別...

深入淺出理解 COOKIE MAPPING

在網際網路中,我們有著許多標識唯一使用者的技術手段,其中,最為常見的就是 cookie 了 什麼是cookie請參看 分析中的cookie 簡單的多,cookie具備幾個特徵 正因為cookie具備上述幾個特徵,也就衍生出cookie在使用上的一些特點了,我們以dsp.com 廣告購買平台 adx....