您好,登錄后才能下訂單哦!
本篇內容介紹了“Python模塊怎么理解”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
為了提高調用許多標準Python模塊的小程序的啟動時間,一個重要的措施是,如果在找到“spam.py ”的目錄中存在一個名為“spam.pyc”的文件,就認為此文件包含了模塊spam的一個所謂“ 字節編譯”版本。
用于生成“spam.pyc”的“spam.py”的修改時間被記入了“spam.pyc”中,如果記錄的修改時間與現在文件的時間不相符的話就忽略編譯文件。一般不需要自己生成“spam.pyc”這樣的編譯文件。每當“spam.py”成功編譯后解釋程序就嘗試寫編譯版本“spam.pyc”,如果不可寫也不會出錯;
如果因為某種原因此文件沒有寫完則生成的“spam.pyc”被識別為不完整的而被忽略。編譯文件“spam.pyc”的格式是不依賴于平臺的,所以不同結構的機器可以共享Python模塊目錄。
下面是對專家的一些竅門:
如果Python解釋程序是以-O標志啟動的,將生成優化的編譯代碼,保存在“.pyo”文件中。目前優化不是很多,現在只是去掉assert語句和SET_LINENO指令。使用了-O標志時,所有字節碼都是優化的,“.pyc”文件被忽略,“.py”文件被編譯為優化的字節碼。 給Python解釋程序兩個優化標志(-OO)產生的優化代碼有時會導致程序運行不正常。
目前雙重優化只從字節碼中刪除了__doc__字符串,使得“.pyo”文件較小。有些程序可能是依賴于文檔字符串的,所以只有在確知不會有問題時才可以使用這樣的優化。 從“.pyc”或“.pyo”讀入的程序并不能比從“.py”讀入的運行更快,它們只是調入速度更快一些。 如果一個程序是用在命令行指定腳本文件名的方式運行的。
腳本的字節碼不會寫入“.pyc ”或“.pyo”文件。所以如果把程序的主要代碼都移入一個模塊,腳本中只剩下導入該模塊的引導程序則可以略微縮短腳本的啟動時間。 可以有叫做“spam.pyc”(當用了-O標志時為“spam.pyo”)的文件而沒有對應的源文件“spam.py”。這可以用來分發一個比較難反編譯的Python代碼庫。
模塊compileall可以把一個目錄中所有模塊編譯為“.pyc”文件(指定了-O選項時編譯為“.pyo”文件)。
一些模塊直接編入了解釋程序中,這些模塊不是語言的核心,為了運行效率或者為了提供對于系統調用這樣的系統底層功能而編入了解釋程序中。提供那些模塊是編譯時的選擇。
Python中可以用“包”來組織Python模塊名字空間,名字引用時可以用“帶點的模塊名。例如,模塊名A.B代表包“A”內名為“B”的子模塊。正如使用模塊可以使不同模塊的作者不用顧慮彼此的全局變量名會沖突,使用帶點的模塊名可以使多模塊包如NumPy和PIL的作者不需要擔心彼此的模塊名會沖突。
例如,Python模塊只在提供amoeba底層指令的系統中才能提供。有一個模塊值得特別重視:sys模塊,每一個Python解釋程序中都編譯入了這個模塊。變量sys.ps1和sys.ps2定義了交互運行時的初始提示和續行提示。
這兩個變量只在解釋程序以交互方式運行時才有定義。 變量sys.path是一個字符串列表,由它確定解釋程序的模塊搜索路徑。它被初始化為環境變量PYTHONPATH所指定的缺省路徑,環境變量沒有定義時初始化為安裝時的缺省路徑。可以用標準的列表操作修改這個搜索路徑,例如:
>>> import fibo, sys >>> dir(fibo) ['__name__', 'fib', 'fib2'] >>> dir(sys) ['__name__', 'argv', 'builtin_module_names', 'copyright', 'exit', 'maxint', 'modules', 'path', 'ps1', 'ps2', 'setprofile', 'settrace', 'stderr', 'stdin', 'stdout', 'version']
“Python模塊怎么理解”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。