#coding:utf-8
'''裝飾器實質就是閉包的使用'''
def deco(func):
def in_deco(x,y):
print "in_deco"
func(x,y)
print "call deco"
#如果這裡不顯示返回的話,預設是none
return in_deco
'''在還沒有使用@deco來裝飾bar函式時,bar函式指向它自己的函式體,
當我們使用了deco來進行裝飾後,直譯器執行到@deco的時候,做兩件事:
1、把bar函式當引數,呼叫deco函式
2、把deco函式的返回值賦值給bar,此時bar就指向in_deco的引用
當我們再次呼叫bar函式時,其實我們是在呼叫in_deco函式,
在in_deco呼叫過程中我們又呼叫了bar原來自己的函式體的語句
'''@deco
def bar(x,y):
print "in bar:",x+y
print type(bar)
bar(1,2)
Python 學習筆記 裝飾器
裝飾器也是乙個函式 巢狀 用來裝飾某個函式,來看下面的 import time deftime count func def start time.time func end time.time print this funnction costs end start deftellhi print...
Python學習筆記 裝飾器
裝飾器 概念 是乙個閉包,把乙個函式當做引數返回乙個替代版的函式,本質上就是乙個返回函式的函式 簡單的裝飾器 def func1 print welcome to beijing def outer func def inner print func return inner f是函式func1的加...
Python裝飾器 學習筆記
python中一切皆物件,函式也可以當做引數傳遞 裝飾器接受函式當做引數,新增功能後返回乙個新函式的函式 python中裝飾器使用 import time deflog time func def log args,kwargs begin time.time res func args,kwarg...