python元程式設計運用 深入淺出Python元程式設計

2021-10-18 14:46:08 字數 1876 閱讀 2384

python 官方教程(的開頭是這樣寫的:「python 是一門既容易上手又強大的程式語言。」這句話本身並無大礙,但需要注意的是,正因為它既好學又好用,所以很多python程式設計師只用到了其強大功能的一小部分。

只需要幾個小時,經驗豐富的程式設計師就能學會用 python 寫出實用的程式。然而隨著這最初高產的幾個小時變成數週甚至數月,在那些先入為主的程式語言的影響下,開發者們會慢慢地寫出帶著「口音」的 python **。即便 python 是你的初戀,也難逃此命運。因為在學校裡,抑或是那些入門書上,教授者往往會有意避免只跟語言本身相關的特性。

另外,向那些已在其他語言領域裡有了豐富經驗的程式設計師介紹 python 的時候,我還發現了乙個問題:人們總是傾向於尋求自己熟悉的東西。受到其他語言的影響,你大概能猜到python會支援正規表示式,然後就會去查閱文件。但是如果你從來沒見過元組拆包(tuple unpacking),也沒聽過描述符(descriptor)這個概念,那麼估計你也不會特地去搜尋它們,然後就永遠失去了使用這些python獨有的特性的機會。這也是本書試**決的乙個問題。

第一部分

第一部分只有單獨的一章,講解的是 python 的資料模型(datamodel),以及如何為了保證行為一致性而使用特殊方法(比如__repr__),畢竟 python 的一致性是出了名的。其實整本書幾乎都是在講解 python 的資料模型,第 1 章算是乙個概覽。

第二部分

第三部分

如何把函式作為一等物件(first-order object)來使用。第三部分首先會解釋前面這句話是什麼意思,然後話題延伸到這個概念對那些被廣泛使用的設計模型的影響,最後讀者會看到如何利用閉包(closure)的概念來實現函式裝飾器(function decorator)。這一部分的話題還包括python 的這些基本概念:可呼叫(callable)、函式屬性(functionattribute)、內省(introspection)、引數註解(parameter annotation)和python 3 裡新出現的 nonlocal 宣告。

第四部分

到了這裡,書的重點轉移到了類的構建上面。雖然在第二部分裡的例子裡就有類宣告(class declaration)的出現,但是第四部分會呈現更多的類。和任何物件導向語言一樣,python 還有些自己的特性,這些特性可能並不會出現在你我學習基於類的程式設計的語言中。這一部分的章節解釋了引用(reference)的原理、「可變性」的概念、例項的生命週期、

如何構建自定義的集合型別和 abc、多重繼承該怎麼理順、什麼時候應該使用操作符過載及其方法。

第五部分

python 中有些結構和庫不再滿足於諸如條件判斷、迴圈和子程式(subroutine)之類的順序控制流程,第五部分的筆墨會集中在這些構造和庫上。我們會從生成器(generator)起步,然後話題會轉移到上下文管理器(context manager)和協程(coroutine),其中會涵蓋新增的功能強大但又不容易理解的 yield from 語法。這一部分以併發性和面向事件的 i/o 來結尾,其中跟併發性相關的是 collections.futures這個很新的包,它借助 futures 包把執行緒和程序的概念給封裝了起

來;而跟面向事件 i/o 相關的則是 asyncio,它的背後是基於協程和yield from 的 futures 包。

第六部分

第六部分的開頭會講到如何動態建立帶屬性的類,用以處理諸如json 這類半結構化的資料。然後會從大家已經熟悉的特性(property)機制入手,用描述符從底層來解釋 python 物件屬性的訪問。同時,函式、方法和描述符的關係也會被梳理一遍。第六部分會從頭至尾地實現乙個字段驗證器,在這個過程中我們會遇到一些微妙的問題,然後在最後一章中就自然引出像類裝飾器(class decorator)和元類(metaclass)這些高階的概念。

《深入淺出程式設計》

首先說,這是一本好書,但好書不一定適合任何人,比如我,原因,balaba.其實重點在哥不是來培養興趣的好不啦,對phython這門語言也不感興趣 不過馬克思會告訴我們,再爛的東西也有優點,不錯,下面我們就來八一八 方式很傳統,按照章節順序吧 1 第一點我的感悟是自己程式設計可以讓你自己隨心所欲的控制...

深入淺出Java Socket程式設計

send資料 out.println has receive.out.flush if str.equals end break client.close catch ioexception ex finally public static void main string args throws ...

網路程式設計深入淺出

不為人知的網路程式設計 一 tcp協議中的疑難雜症 上篇 不為人知的網路程式設計 二 tcp協議中的疑難雜症 下篇 不為人知的網路程式設計 三 關閉tcp連線時為什麼會time wait close wait 不為人知的網路程式設計 四 深入研究分析tcp的異常關閉 不為人知的網路程式設計 五 ud...