definnter(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層裝飾器函式
##inter('1')(index) = a(index)然而兩層的裝飾器且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
']()
#res[name] =func
#res['1'] = index
importtime
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()
更新
defdef 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...