裝飾器亂入用法

2022-08-20 18:57:13 字數 2607 閱讀 3315

def

innter(name):

def a(func):#

func接收index呼叫的引數『a』

name()

return

a@innter

#當innter後無引數時,會將index 函式傳入innter函式的name中

defindex():

print('

index---->')

index('a

')#

def innter(name):#

name = 1

def a(func):#

func接收index函式

defb():

func()

return b#

將函式b作為a的值返回給index 執行index()相當於執行b()

return a#

將函式a的值返回

@innter('1

')#當innter有引數時,會將『1』傳入innter函式的name中

defindex():

print('

index---->')

#index = innter('1')(index) = a(index) =b

#func 會根據作用域找到是通過傳參過來的,func = index

#dic_cho['1']()#這種會將index函式儲存到字典中

index()#

這種呼叫需要3層裝飾器函式

#

然而兩層的裝飾器且innter帶引數,不需要呼叫便可以執行index,可將函式儲存到字典中,然後呼叫

res ={}

def innter(name):#

name = 1

def a(func):#

func接收index函式

res ['

name

']=func

return a#

將函式a的值返回,執行a函式

@innter('1

')#當innter有引數時,會將『1』傳入innter函式的name中

defindex():

print('

index---->')

res['1

']()

#inter('1')(index) = a(index)

#res[name] =func

#res['1'] = index

import

time

defdeco(func):

starttime =time.time()

func()

endtime =time.time()

msecs = (endtime-starttime)*1000

print('

%s'%msecs)

defmyfunc():

print('

start myfunc')

time.sleep(2)

print('

end myfunc')

deco(myfunc)

#呼叫方式改變了,為了不改變呼叫方式↓

import

time

defdeco(func):

def starttime =time.time()

func()

endtime =time.time()

msecs = (endtime-starttime)*1000

print('

%s'%msecs)

return

defmyfunc():

print('

start myfunc')

time.sleep(2)

print('

end myfunc')

myfunc =deco(myfunc)

#myfunc()

import

time

defdeco(func):

def starttime =time.time()

func()

endtime =time.time()

msecs = (endtime-starttime)*1000

print('

%s'%msecs)

return

@deco

defmyfunc():

print('

start myfunc')

time.sleep(2)

print('

end myfunc')

myfunc()

更新

def

def inner(*args,**kwargs):

return func(*args,**kwargs)

return

inner

""" index = inner函式

"""def

index():

print('

函式內容')

#實際執行的 inner函式,inner函式內部呼叫原函式

index()

大資料亂入

以前談及大資料,總會第一想到的是hadoop,分布式,然後沒了。而真正接觸大資料的時候,發現這是乙個很大的體系,大資料只是個概念,而真正的核心在於資料的操作上,從資料的收集,處理,儲存,計算上來發現資料中潛藏的價值。大資料,機器學習,深度學習,人工智慧,這幾個比較火熱的話題,其實中間存在著千絲萬縷的...

python 裝飾器的用法

先從乙個小例子開始,然後逐步引出裝飾器的作用。def name name james print my name is format name name 輸出結果為 my name is james.如果此時想在列印 my name is.之前加上打招呼的語句,且不能修改name 函式,就可以使用裝...

Python 裝飾器引數用法

python裝飾器 如果要增強某一函式的功能,但又不希望修改原函式的定義,這種在 執行期間動態增加功能的方式,稱之為 裝飾器 decorator 寫 需要遵循開放封閉原則,已經實現的功能 不允許被修改,但可以被擴充套件。def add xx haha print add qx裝飾器執行之前,呼叫ad...