国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Python閉包及裝飾器運行原理解析

瀏覽:107日期:2022-07-21 08:19:26

一、閉包

閉包從形式上來說是在外部函數中定義內部函數,并且內部函數引用了外部函數的變量,此變量叫做自由變量。

或者說是將組成函數的語句和這些語句的執行環境打包在一起。

閉包滿足的條件:

必須有一個內嵌函數

內嵌函數必須使用外部函數的變量

外部函數的返回值必須是內嵌函數

def closure(): value = [] def fun(tmp): value.append(tmp) return value return funcc = closure() cc(0) #[0] 等同于closure(fun(0))cc(1) #[0,1]cc(2) #[0,1,2]

外部函數closure中有變量value和內部函數fun,并且內部函數fun引用了自由變量value,當執行cc = closure()時,就產生了一個閉包fun,該閉包持有只有變量value,當函數closure生命周期結束后,value依然存在,因為它被閉包引用了。

二、裝飾器

裝飾器其實就是閉包的應用,只不過其傳遞的是函數。

def add_time(fun): def wrapper(): print(’time: 12:00’) return fun() return wrapperdef add_format(fun): def wrapper(): print(’n’) return fun() return wrapper@add_format #等同于demo = add_format(add_time(demo))@add_time #等同于 demo = add_time(demo)def demo(): return ’hello world!’

另外,裝飾器會將demo函數的元信息丟失,例如__name__等等。

例如demo函數的__name__會由’demo’變成了’wrapper’,這時需要用到functools庫,在wrapper函數前加上@functools.wraps(fun):

import functoolsdef add_time(fun): @functools.wraps(fun) def wrapper(): print(’time: 12:00’) return fun() return wrapperdef add_format(fun): @functools.wraps(fun) def wrapper(): print(’n’) return fun() return wrapper@add_format #等同于demo = add_format(add_time(demo))@add_time #等同于 demo = add_time(demo)def demo(): return ’hello world!’

例如給任意函數加上打印時間的功能的裝飾器:

def metric(fn): start=time.time() @functools.wraps(fn) def wrapper(*args,**kw): end=time.time() print(’%s executed in %s ms’ % (fn.__name__,start-end)) return fn(*args,**kw) return wrapper

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 九九久久久久久久爱 | caoporen国产91在线 | 午夜精| 国产一区二区三区在线观看影院 | 国产91久久精品一区二区 | 看片网站在线 | 亚洲国产精品久久卡一 | 免费又黄又爽又猛大片午夜 | 成人18免费软件 | 国产精品高清一区二区 | 一级毛片不收费 | 国产高清免费视频 | 欧美三级超在线视频 | 操爽视频 | 亚洲第一区香蕉_国产a | 久草在线在线 | 国产三级日产三级日本三级 | 欧美人成人亚洲专区中文字幕 | 久久久久毛片免费观看 | 日韩综合网站 | 久久久久久综合对白国产 | 男女扒开双腿猛进入免费网站 | 精品九九久久国内精品 | 特级毛片www欧美 | 国产普通话一二三道 | 亚洲自拍图片区 | 精品伊人久久久久网站 | 精品一区二区三区的国产在线观看 | 亚洲精品成人网 | 日韩欧美一区二区三区免费观看 | 午夜天堂视频 | 一级片在线观看视频 | 成人一级免费视频 | 久久久久在线 | 久久香蕉国产线看观看精品yw | 九九久久免费视频 | 中国一级片免费看 | 在线观看不卡一区 | 97视频网站| 日韩在线 中文字幕 | 国产三级做爰在线观看视频 |