國立高雄海洋科技大學

#請益、知識 Python程式語言的底層技術與知識

2020年8月20日 14:47
家常禮貌的寒暄就略過了。 目前職業是Python工程師,由於想奠定工作上扎實的基礎,因此希望獲得對於Python的底層知識、原理以及實現過程。經過一番查詢與各路前輩指引,最終都導向原文知識。 而原文知識畢竟不是母語,可想吸收效果也將十分有限,因此再跨入原文行列前,想先找些中文相關的課程或是書籍,進行瀏覽與簡介。有了基礎常識與知識後再轉去原文,對於吸收方面,我認為會好上許多。 基於上文所述,想請益的目標為,是否有位在台北,且講解內容為Python底層原理的相關課程或中文書籍可以推薦。
7
回應 8
文章資訊
Logo
每週有 30 則貼文
共 8 則留言
國立成功大學
CPython is the reference implementation of the Python programming language. Written in C and Python CPython can be defined as both an interpreter and a compiler as it compiles Python code into bytecode before interpreting it e.g., python garbage collection
南臺科技大學
可以去巨匠電腦問問看 那邊滿多課程都可以找的到!
你心中的「Python底層原理」是什麼?要先知道你想做什麼大家才好推薦,或知道自己腦中的所知,跟你想要的東西沒有交集,也可以自動 pass 這題。 當你脫離了初學者之後,很多不是初學者或「應用面」的材料,不太容易找到翻譯過的出版品 (中國或日本也許會有),假設開發者們的實力是個常態分佈,那巿場的需求不大,沒有誘因促成這樣的出版品大量被轉譯,那你真的只能看原文了,不是嗎?
+1 B3。即使有翻譯,不同人或國家翻譯的用語也差蠻多的。有可能看了之後,再看原文時,還需要想辦法把名詞對應過去。 我個人建議如果你所謂"Python底層原理"指的是garbage collector, dynamic typing的實作,那直接看原/英文資料甚至CPython程式碼應該最多最完整。
逢甲大學
去巨匠學底層原理 我是不是搞錯了什麼
原 PO - 國立高雄海洋科技大學
感謝 B1, B2, B3, B4, B5 各位的指點,由於工作忙碌,以及能回文時間被我拿去找文獻了,因此一直沒有上來回覆。 B1 大的CPython,我在Githu上看了官方的實作,對於我一個才疏學淺的人來說那絕對是天書。不過上面的東西寫得相當詳細而且扎實,是將來幫助理解Python底層的關鍵。對於現階段的我來說實在有點太艱深了,嘆。 B2 補習班上課時間上不太允許,1-5必須上班,67希望有個人的時間,目前希望使用的零碎時間是下班後到睡覺前。 B3 qty大來回覆我的發問真的倍感榮幸。在PyCharm上用command+左鍵一路往下點進去,比如說 object ,點到最後看到的東西都是抽象父類,像這樣: class object: def __init__(self): pass @staticmethod def __new__(cls, *more): pass 沒有實際的實作過程,我的底層原理所描述的就是這些抽象父類別之下的實作過程。 B4 你說得沒錯,但之所以會先找中文文獻,是希望在接觸原文文獻時先有基礎的架構以及理解,這樣看到原文時也比較好猜測大概在講些什麼。我想,直接挑戰原文的話要消耗掉的時間太多了,而且可能還伴隨低效能。開始上班之後,希望時間的效益能發揮到最大。 最後,我找來找去只找到了一點點的中文文獻,看來最終還是得乖乖去看原文知識 這邊分享一篇最近找到的。 文獻:
雖然沒有講到底層實作原理,但提及了過程,依我現在的破爛技術與少量知識,我認為寫得不錯。
B6 你目前的描述的是底層的實作細節,也就是 Python 內建型別的實作在哪邊。 這種跟 Python 語言這一層為 baseline 再往下探索的內容,通常 keyword 會是 "internals" 或 "peep" (偷窺),所以你用這二個關鍵字去混搭你想要學的技術的名稱,就會比較有機會找到它的東西。 或是直接看那個技術寫給「開發者」「貢獻者」的相關指引。
像第一個,其實就是開發指引,內容有描述到如何對應 C 的實作:
內建型別是放在 Objects 下: (上 github 研究別人的 code 時,我喜歡順便看一下 blame 可以知道每一行修改的時間) 不算太意外的,就是一個巨大的 struct 包了許多的 function pointer
往下翻一翻,這大概就是傳說中的 __new__ 吧?(其實我不確定是不是它,畢竟中間還有一層 VM 的 OP,它是不是直接呼叫這裡得再挖文件研究)
但吸引我注意的是那個 30 年的 };,今年是 Python 問巿的第 29 年,在那之前就已經默默努力了呢! 基本上我不知道 Python 底層如何運作,但應該就如一般的程式,有 execution stack 跟 call frame。
逢甲大學
這個484你要的 還是找個時間把英文補一下吧 畢竟寫程式這東西 很多都美國的 沒辦法直接了解第一手資料 很不方便