摘要:背景今天在看一篇介紹生成器的文章的時候無心插柳了解到一個很有趣的標準庫,可以用于查看函數的匯編指令,從而理解代碼的執行機制。相關技術,模塊代碼感想標準庫博大精深啊。
背景
今天在看一篇介紹Python生成器的文章的時候無心插柳了解到一個很有趣的Python標準庫dis,可以用于查看函數的匯編指令,從而理解Python代碼的執行機制。
相關技術Python3, dis模塊
代碼In [50]: dis(lambda x: x ** 2 if isinstance(x, int) else "Hello, {}".format(x) if isinstance(x, str) ...: else "Unknown type.") 1 0 LOAD_GLOBAL 0 (isinstance) 3 LOAD_FAST 0 (x) 6 LOAD_GLOBAL 1 (int) 9 CALL_FUNCTION 2 (2 positional, 0 keyword pair) 12 POP_JUMP_IF_FALSE 23 15 LOAD_FAST 0 (x) 18 LOAD_CONST 1 (2) 21 BINARY_POWER 22 RETURN_VALUE >> 23 LOAD_GLOBAL 0 (isinstance) 26 LOAD_FAST 0 (x) 29 LOAD_GLOBAL 2 (str) 32 CALL_FUNCTION 2 (2 positional, 0 keyword pair) 35 POP_JUMP_IF_FALSE 51 38 LOAD_CONST 2 ("Hello, {}") 41 LOAD_ATTR 3 (format) 44 LOAD_FAST 0 (x) 47 CALL_FUNCTION 1 (1 positional, 0 keyword pair) 50 RETURN_VALUE >> 51 LOAD_CONST 3 ("Unknown type.") 54 RETURN_VALUE感想
Python標準庫博大精深啊。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38141.html
摘要:匯編器是怎么把對應的匯編代碼,翻譯成為機器碼的。總結打孔卡,其實就是一種存儲程序型計算機。推薦閱讀了解的指令集參看計算機組成與設計軟硬件接口第版的小節參考深入淺出計算機組成原理 你在學寫程序的時候,有沒有想過,古老年代的計算機程序是怎么寫出來的?showImg(https://ask.qcloudimg.com/http-save/1752328/fpfs9776q8.png); 當...
摘要:總結上面的過程中,我們已經將源程序經過預處理編譯匯編階段變成了二進制代碼,這三個過程我們都是用兩種方法完成的,一種是參數的方法,另一種是使用系統默認的預處理器,編譯器,匯編器。 目錄 1. 程序的翻譯環境和執行環境 2. 詳解編譯+鏈接 2.1 翻譯環境 2.2 編譯本身也分為幾個階段: ?...
摘要:在中,源代碼首先將進行詞法分析,將源代碼切割為多個字符串單元,分割后的字符串稱之為。圖以為例解釋型語言的執行示意圖第步源碼通過詞法分析得到第步基于語法分析器生成抽象語法樹第步抽象語法樹轉換為指令集合,解釋執行。 順風車運營研發團隊 李志 發表在程序人生 公眾號我們常用的高級語言有很多種,比較出名的有CC++、Python、 PHP、Go、Pascal等。而這些語言根據運行的方式不同,...
摘要:按恢復剛剛的撤銷。按將光標所在位置開始往后的個字刪除,并進入插入模式。跳至指定的行列出光標所在行的行號。退出,如果無法離開,可在后面跟一個表示強制退出。和默認生成的二進制程序是動態鏈接的,可以使用指令查看。 ...
摘要:程序預處理本章節研究的是,源代碼文件是如何一步步得到一個可執行程序的。如的語句被稱為預處理指令,還有注釋文本的刪除,都在此階段完成替換。目的是能夠將所有文件中的代碼組合到一起成一個完整的程序。終止程序可以正常也可以意外終止程序。 ...
閱讀 3588·2021-09-13 10:28
閱讀 1937·2021-08-10 09:43
閱讀 1010·2019-08-30 15:44
閱讀 3178·2019-08-30 13:14
閱讀 1830·2019-08-29 16:56
閱讀 2938·2019-08-29 16:35
閱讀 2843·2019-08-29 12:58
閱讀 864·2019-08-26 13:46