python 模組的載入

2021-09-19 18:38:55 字數 1889 閱讀 5895

不管是用import還是用from mmmm import *的方式匯入模組,當程式執行之後,回頭在看那個儲存著mmmm.py檔案的目錄中,多了乙個檔案:

$ ls mmm*

mmmm.py mmmm.pyc

在這個目錄下面,除了原來的那個mmmm.py之外,又多了乙個mmmm.pyc檔案,這個檔案不是我寫的,需要用import的過程說起。

import mmmm,並不是僅僅將mmmm.py這個檔案裝載到當前位置(檔案內),其實是首先進行了一次運算。當mmmm.py被第一次匯入的時候,python首先要對其進行編譯,生成擴充套件名為.pyc的同名檔案,然後才執行mmmm模組的**,建立相應的物件等。就如同把大象裝進冰箱,有三步要執行:

搜尋。就是python要能夠找到import的模組。怎麼找到,後面講述。

執行。執行就是前面已經編譯的模組位元組碼檔案,順理成章要執行了。

一般情況下,python會自動的完成模組搜尋過程。但是,在某些情況下,或許會要求程式設計師來設定搜尋路徑。當import乙個模組後,python會按照下面的順序來找那個將要匯入的模組檔案

程式的主目錄。上一講中,在codes這個目錄中執行互動模式,這時候的主目錄就是codes,當在那個互動模式中執行import mmmm的時候,就首先在codes這個目錄中搜尋相應的檔案(找到.py之後編譯成為.pyc)。當然,後面在網頁程式設計中,所謂主目錄是可以通過頂層檔案設定的目錄。

pythonpath目錄。這是乙個環境變數設定,如果沒有設定則濾去。如何進行環境變數設定,請google啦。

標準庫目錄。已經隨著python的安裝進入到計算機中的那個。

任何.pt**件的內容。如果有這類檔案,最後要在這類檔案中搜尋一下。這是乙個簡單的方法,在.pt**件中,加入有效目錄,使之成為搜尋路徑。下圖就是我的計算機上,存放.pt**件的位置以及裡面放著的.pt**件

也可以自己編寫.pt**件,裡面是有關搜尋目錄,儲存到這裡。比如,開啟目錄中的easy-install.pt**件,發現的內容:

搜尋就是這麼乙個過程。這裡建議了解即可,不一定非要進行什麼設定,在很多情況下,python都是會自動完成的。特別是初學者,暫且不要輕舉妄動。

以mmmm模組為例。

在乙個shell裡面,執行了python,並且做了如下操作:

>>> import mmmm

>>> mmmm.web

''

#!/usr/bin/env python

#coding:utf-8

web = ", i am writing a python book on line. "

def my_name(name):

print name

class pythoner:

def __init__(self,lang):

self.lang = lang

def programmer(self):

print "python programmer language is: ",self.lang

儲存之後,切換到原來的那個匯入了模組的互動模式:

>>> mmmm.web

''

輸出的跟前面的一樣,沒有任何變化,這是為什麼呢?

>>> reload(mmmm)

>>> mmmm.web

', i am writing a python book on line. '

這下就顯示修改之後的內容了。

python載入模組 Python 模組的載入順序

基本概念 module 模組,乙個 py 檔案或以其他檔案形式存在的可被匯入的就是乙個模組 package 包,包含有 init 檔案的資料夾 relative path 相對路徑,相對於某個目錄的路徑 absolute path 絕對路徑,全路徑 python 直譯器是如何查詢包和模組的 pyth...

python 模組載入

本文主要介紹python模組載入的過程。所有的module都是由物件和物件之間的關係組成。python中所有的東西都是物件,分為三類 型別type 類class和例項instance。三種物件之間的兩種關係 類和物件的關係可以通過內建方法type來辨別。python中,任何乙個類都是直接或間接繼承自...

python模組載入

秉著python一切皆為物件的原則,我來看看python庫的型別 import os print type os 結果為乙個名為 module 的型別 1 什麼樣的檔案型別叫做模組 以.py檔案結尾的都可以被python認為是模組 2 package的概念 為了幫助組織模組並提供名稱層次結構,pyt...