想使用 Python 源文件,只需在另一個源文件里執(zhí)行 import 語句,語法如下:
當解釋器遇到 import 語句,如果模塊在當前的搜索路徑就會被導入。
搜索路徑是一個解釋器會先進行搜索的所有目錄的列表。如想要導入模塊 support,需要把命令放在腳本的頂端:
test.py 引入 support 模塊:
以上實例輸出結果:
一個模塊只會被導入一次,不管你執(zhí)行了多少次import。這樣可以防止導入模塊被一遍又一遍地執(zhí)行。當我們使用import語句的時候,Python解釋器是怎樣找到對應的文件的呢?
這就涉及到Python的搜索路徑,搜索路徑是由一系列目錄名組成的,Python解釋器就依次從這些目錄中去尋找所引入的模塊。這看起來很像環(huán)境變量,事實上,也可以通過定義環(huán)境變量的方式來確定搜索路徑。
搜索路徑是在Python編譯或安裝的時候確定的,安裝新的庫應該也會修改。搜索路徑被存儲在sys模塊中的path變量,做一個簡單的實驗,在交互式解釋器中,輸入以下代碼:
sys.path 輸出是一個列表,其中第一項是空串'',代表當前目錄(若是從一個腳本中打印出來的話,可以更清楚地看出是哪個目錄),亦即我們執(zhí)行python解釋器的目錄(對于腳本的話就是運行的腳本所在的目錄)。
因此若像我一樣在當前目錄下存在與要引入模塊同名的文件,就會把要引入的模塊屏蔽掉。了解了搜索路徑的概念,就可以在腳本中修改sys.path來引入一些不在搜索路徑中的模塊?,F(xiàn)在,在解釋器的當前目錄或者 sys.path 中的一個目錄里面來創(chuàng)建一個fibo.py的文件,代碼如下:
然后進入Python解釋器,使用下面的命令導入這個模塊:
這樣做并沒有把直接定義在fibo中的函數(shù)名稱寫入到當前符號表里,只是把模塊fibo的名字寫到了那里。
可以使用模塊名稱來訪問函數(shù):
如果你打算經常使用一個函數(shù),你可以把它賦給一個本地的名稱: