#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)
python裝飾器的學習筆記一
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.