python裝飾器的學習筆記一

#coding:utf-8

'''
    裝飾器其實就是對閉包的使用

'''
def my_closure(func):
    print "my_closure"
    def in_func(*args):
        print "in_func.args=",args
        if len(args)==0:
            return 0
        for val in args:
            if  not isinstance(val, int):
                return 0
        return func(*args)
    return in_func

'''這裏等價於my_sum = my_closure(my_sum)
裝飾器做兩件事:
1、當解釋器讀到@my_closure時,會把my_closure當函數,my_sum當用參數,調用my_closure函數,
2、把返回值賦值給my_sum,然後當我們調用到my_sum的時候實際就是調用in_func函數

'''
@my_closure      
def my_sum(*args):
    return sum(args)

def my_average(*args):
    return sum(args)/len(args)


print my_sum(1,2,3,4,5)
#print my_average(1,2,3,4,5)






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章