中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python程序運行原理的示例分析

發布時間:2021-08-03 12:31:44 來源:億速云 閱讀:135 作者:小新 欄目:開發技術

這篇文章主要介紹Python程序運行原理的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

編譯型語言(C語言為例)

Python程序運行原理的示例分析

動態型語言

Python程序運行原理的示例分析

一個程序是如何運行起來的?比如下面的代碼

#othermodule.py
def add(a, b):
  return a + b

#mainrun.py

import othermodule

a = ['xiaoke', 1, 'python']
a = 'xiaoke string'

def func():
  a = -5
  b = 257 
  print(a + b)

print(a)

if __name__ == '__main__':
  func()
  res = othermodule.add(1, 2)
  print(res)

分析

Python程序運行原理的示例分析

Python程序運行原理的示例分析

dir 函數

Python 的內置函數 dir 可以用來查看一個命名空間下的所有名字符號。一個用處是查看一個命名空間的所有屬性和方法(這里的命名空間就是指類、函數、module)。

比如,查看當前的命名空間,可以使用 dir(),查看 sys 模塊,可以使用 dir(sys)

def 指令

def func(),在字節碼指令中就是 MAKE_FUNCTION。
Python 是動態語言,def 實際上是執行一條指令,用來創建函數
(class 則是創建類的指令),而不僅僅是個語法關鍵字。
函數并不是事先創建好的,而是執行到的時候才創建的。

def func() 將會創建一個名稱為 func 的函數對象。
實際上是先創建一個函數對象,然后將 func 這個名稱符號綁定到這個函數上。

pyc文件

pyc 文件是 PyCodeObject 對象在硬盤上的表現形式。生成pyc文件:

python -m py_compile xx_module.py

pyc文件三大作用

  1. 創建時間,py文件比pyc文件新,則從新生成pyc

  2. magic num做運行前版本檢測,版本不同從新生成pyc

  3. PyCodeObject 對象

在運行期間,編譯結果也就是 PyCodeObject 對象,只會存在于內存中,而當這個模塊的 Python 代碼執行完后,就會將編譯結果保存到了 pyc 文件中,這樣下次就不用編譯,直接加載到內存中。

這個 PyCodeObject 對象包含了 Python 源代碼中的字符串,常量值,以及通過語法解析后編譯生成的字節碼指令。PyCodeObject 對象還會存儲這些字節碼指令與原始代碼行號的對應關系,這樣當出現異常時,就能指明位于哪一行的代碼。

import 指令

import 指令是用來載入 module 的,如果需要,也會順道做編譯的事。但 import 指令,還會做一件重要的事情就是把 import 的那個 module 的代碼執行一遍,這件事情很重要。
Python 是解釋執行的,連函數都是執行的時候才創建的。如果不把那個 module 的代碼執行一遍,那么 module 里面的函數都沒法創建,更別提去調用這些函數了。

執行代碼的另外一個重要作用,就是在這個 module 的命名空間中,創建模塊內定義的函數和各種對象的符號名稱(也就是變量名),并將其綁定到對象上,這樣其他 module 才能通過變量名來引用這些對象。

Python 虛擬機還會將已經 import 過的 module 緩存起來,放到一個全局 module 集合 sys.modules 中。
這樣做有一個好處,即如果程序的在另一個地方再次 import 這個模塊,Python 虛擬機只需要將全局 module 集合中緩存的那個 module 對象返回即可。

以上是“Python程序運行原理的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

搜索| 桓台县| 岳阳县| 江川县| 靖宇县| 伊宁市| 泗洪县| 枣强县| 七台河市| 藁城市| 青神县| 蓝山县| 桂阳县| 平远县| 楚雄市| 余姚市| 墨竹工卡县| 南丰县| 衡阳县| 武定县| 玉树县| 北京市| 高阳县| 保亭| 曲麻莱县| 佛坪县| 柳江县| 罗田县| 宁德市| 庆元县| 阿瓦提县| 武隆县| 奉贤区| 祁门县| 固原市| 通渭县| 涞水县| 台中县| 政和县| 正安县| 金秀|