#-*- coding: utf-8 -*-
#author:baoshan
#python對某個物件是否能通過裝飾器形式使用只有乙個要求:decorator必須是乙個可被呼叫的物件。
#我們最熟悉的就是函式了
#除函式之外,類也可以是callable物件,只要實現了__call__函式。
#如下delayfunc是乙個實現了__call__的類,delay返回乙個偏函式,在這裡delay就可以作為乙個裝飾器
import
time
import
functools
class
delayfunc:
def__init__
(self, duration, func):
self.duration =duration
self.func =func
def__call__(self, *args, **kwargs):
print('
wait for seconds...
'.format(duration=self.duration))
time.sleep(self.duration)
return self.func(*args, **kwargs)
def eager_call(self, *args, **kwargs):
print('
call without delay')
return self.func(*args, **kwargs)
defdelay(duration):
"""裝飾器:推遲某個函式的執行。
同時提供 .eager_call方法立即執行
"""#
此處為了避免定義額外函式,直接呼叫functools.partial幫助構造
return
functools.partial(delayfunc, duration)
@delay(duration=2)
defadd(a, b):
return a +b
(add)
print('
-'*20)
print(add(3,5))
print('
-'*20)
print(add.func)
輸出結果:
<__main__.delayfunc object at 0x0000029a5b61da58>--------------------wait
for 2seconds...
8--------------------
謝謝!
python 偏函式 python 偏函式
functools.partial可以設定預設引數和關鍵字引數的預設值 python的functools模組提供了很多有用的功能,其中乙個就是偏函式 partial function 要注意,這裡的偏函式和數學意義上的偏函式不一樣。在介紹函式引數的時候,我們講到,通過設定引數的預設值,可以降低函式呼...
python偏函式和高階函式 高階函式與偏函式
今天主要在這裡仔細說明一下高階函式與偏函式的知識。高階函式 在絕大多數通常的計算機語言裡,函式的引數只接受基本的資料型別或是物件的引用,返回值也只是基本資料型別或者物件引用。示例如下 function test1 else return function console.log 資料不符合規範,錯誤...
Python偏函式及其使用
首先,先來看一下我們的int函式 int作為函式時有個神奇功能,將字串變為數,比如 123 返回值123。這是乙個整型數。ok,我們再想一下,int 123 當然返回的是123了。如果輸入是 int 123 8 返回是83 int 123 8 83意思是返回8進製的123在十進位制下的表示。這個8,...