国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

簡單理解Python中基于生成器的狀態(tài)機

2019-11-25 17:45:36
字體:
供稿:網(wǎng)友

 簡單生成器有許多優(yōu)點。生成器除了能夠用更自然的方法表達一類問題的流程之外,還極大地改善了許多效率不足之處。在 Python 中,函數(shù)調(diào)用代價不菲;除其它因素外,還要花一段時間解決函數(shù)參數(shù)列表(除了其它的事情外,還要分析位置參數(shù)和缺省參數(shù))。初始化框架對象還要采取一些建立步驟(據(jù) Tim Peters 在 comp.lang.python 上所說,有 100 多行 C 語言程序;我自己還沒檢查 Python 源代碼呢)。與此相反,恢復一個生成器就相當省力;參數(shù)已經(jīng)解析完了,而且框架對象正“無所事事地”等待恢復(幾乎不需要額外的初始化)。當然,如果速度是最重要的,您不應該使用字節(jié)碼已編譯過的動態(tài)語言;但即使在速度不是主要考慮因素的情況下,快點總比慢點好。
回憶狀態(tài)機

在“可愛的 Python”前面的另一篇文章中,我介紹了StateMachine 類 ,給定的機器需要多少狀態(tài)處理程序,它就允許用戶添加多少狀態(tài)處理程序。在模型中,將一個或多個狀態(tài)定義為終態(tài)(end state),僅將一個狀態(tài)定義為初始狀態(tài)(start state)(調(diào)用類方法對此進行配置)。每個處理程序都有某種必需的結(jié)構(gòu);處理程序?qū)?zhí)行一系列操作,然后過一會兒,它帶著一個標記返回到 StateMachine.run() 方法中的循環(huán)內(nèi),該標記指出了想得到的下一個狀態(tài)。同樣,用 cargo 變量允許一個狀態(tài)把一些(未處理的)信息傳遞給下一個狀態(tài)。

我介紹的 StateMachine 類的典型用途是以一個有狀態(tài)的方式使用輸入。例如,我所用的一個文本處理工具(Txt2Html)從一個文件中讀取數(shù)行內(nèi)容;依據(jù)每行所屬的類別,需要以特殊的方式對其進行處理。然而,您經(jīng)常需要看看前面幾行提供的上下文來確定當前行屬于哪個類別(以及應該怎樣處理它)。構(gòu)建在 StateMachine 類上的這個過程的實現(xiàn)可以定義一個 A 處理程序,該處理程序讀取幾行,然后以類似 A 的方式處理這些行。不久,滿足了一個條件,這樣下一批的幾行內(nèi)容就應該由 B 處理程序來處理了。 A 把控制傳遞回 .run() 循環(huán),同時指示切換到 B 狀態(tài)

主站蜘蛛池模板: 阆中市| 中宁县| 青海省| 土默特右旗| 高碑店市| 孟州市| 吉水县| 开封县| 永济市| 理塘县| 霍州市| 宁阳县| 开远市| 武川县| 汾西县| 古交市| 科尔| 格尔木市| 偃师市| 绥化市| 伊金霍洛旗| 工布江达县| 南雄市| 民权县| 海兴县| 靖安县| 黔南| 桂东县| 乾安县| 苍梧县| 潜山县| 黔西| 阿巴嘎旗| 堆龙德庆县| 漠河县| 菏泽市| 漳州市| 朝阳县| 峨眉山市| 富蕴县| 定西市|