python閉包與裝飾器

文章目錄
- 1. python閉包與裝飾器
- 1.1. 閉包
- 1.2. 裝飾器 </ol> </li> </ol> </div>
python閉包與裝飾器
閉包
如果在一個內部函數里,對在外部作用域(但不是在全局作用域)的變量進行引用,那么內部函數就被認為是閉包(closure)。它只不過是個“內層”的函數,由一個名字(變量)來指代,而這個名字(變量)對于“外層”包含它的函數而言,是本地變量。
實例:
def set_passline(passline): def cmp(val): if val >= passline: print ('pass') else: print ('failed') return cmp f_100 = set_passline(60) f_100(89) f_150 = set_passline(90) f_150(89)
裝飾器
簡單地來說裝飾器就是在不改變原有函數的前提下,為函數加入新的功能。
實例:
def dec(func): def in_dec(*arg): if len(arg) == 0: return 0 for val in arg: if not isinstance(val , int): return 0 return func(*arg) return in_dec @dec def my_sum(*arg): return sum(arg) def my_average(*arg): return sum(arg)/len(arg) #my_sum = dec(my_sum) my_average = dec(my_average) print (my_sum(1,2,5,4,5)) print (my_sum(1,2,3,4,5,'6'))
來自: http://wustrive2008.github.io/2016/01/08/python/python閉包與裝飾器/
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!