在校學生爲室友整理出最全面的Python教程!中國好室友!入門教程

元類

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

103456743

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

五、實踐為王

請記住上面的簡單案例,如果您想從本文中獲得對Python元類僅有的一點印象。紙上得來終覺淺,絕知此事要躬行,開始吧。

模塊

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

此時,在包pkg中就可以導入子模塊mod_1(彷彿子模塊mod_1真的在包pkg中):

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

3、可導出的公有屬性

在公有屬性方面,包與模塊的行為完全一致,當然別忘了包還有 動態的新增屬性。

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

2、導入過程

一個模塊的導入過程主要分三步:搜索、加載 和 名字綁定。(具體參考 The import statement)

1)搜索

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

3、更多細節根據 The import statement 中的描述,以下是導入原理對應的Python偽碼:

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

函數式編程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

差異點函數(lambda表達式)函數(def語句)
函數體只能是單行表達式(expression)
可以是任意複雜的語句(statement)
函數返回值返回值就是函數體中的表達式的求值結果由函數體中的return語句指定 返回值
函數名定義後直接返回函數對象(匿名函數定義後自動為函數對象綁定函數名
函數定義位置可以在任何允許函數對象出現的位置定義(支持即時定義,即時調用)只能在允許語句出現的位置定義(先定義,後調用)
用途多用於一次性使用的簡單函數 適用於一切函數和類方法

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

閉包的這種 能夠記住環境狀態 的特性非常有用,Python中有一些其他特性就是藉助閉包來實現的,比如 裝飾器

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

從上面的示例可以看出,如果在編碼過程中遇到了“多次用相同的參數調用一個函數”的場景,就可以考慮使用偏函數來固化這些相同的參數,進而簡化函數調用。

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

可以看出,這個閉包版本的唯一缺點是它需要對函數title進行重新定義(與默認參數的情況有些類似)。

總而言之,如果需要對 已有函數 進行參數固化,偏函數是最佳選擇。

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

2、生成器表達式

生成器表達式(Generator Expressions)與列表解析在語法和功能方面都非常相似。二者的根本差異是:生成器表達式返回一個 生成器,而列表解析返回一個列表。如下所示:

差異點生成器表達式 列表解析
表示方法(expr for item in iterable if cond_expr)[expr for item in iterable if cond_expr]
返回值一個生成器一個列表

與列表解析相比,生成器表達式具有 延遲計算(lazy evaluation)的特點,因此在使用內存上更有效。關於生成器表達式的實際案例,可以參考 Python核心編程(第二版) 中的 『8.13』 一節:『生成器表達式』。

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程

謝謝閱讀!!!!

在校學生為室友整理出最全面的Python教程!中國好室友!入門教程


分享到:


相關文章: