python中import的幾種方式:
1. import math
import os, math, sys
2. import math as pymath
3. from math import exp
4. from math import *
在理解import原理之前,需要明白python的庫,模塊,包:
庫library:一種特定功能集合的通俗說法
包含一些程序功能,通過import 引入使用對應模塊和包,python也具有一些標准庫,還有第三方庫
模塊module:以單個文件為命名空間的代碼片段
模塊是一個單獨的.py文件,模塊名就是文件名,一般模塊有這段代碼,區分是被導入對象還是主程序:if __name__ == "__name__"
包package:由一組模塊構成,有層次命名空間的程序功能
包由多個.py文件有組織的構成,包是模塊的上一級概念
接着來理解python如何將庫,包,模塊import進來的:
Python 執行以下語句會發生什么:
1 |
import mod |
當解釋器執行上面的import語句時,它將在從以下來源收集的目錄列表中搜索mod.py:
- 輸入腳本的運行目錄,如果解釋器正在交互運行,則為當前目錄。
- PYTHONPATH環境變量(如果已設置)中包含的目錄列表。 (“PYTHONPATH”的格式取決於操作系統,但與”PATH”環境變量相似。)
- 在安裝 Python 時配置的與安裝有關的目錄列表。
在 Python 變量 sys.path 中可以訪問生成的搜索路徑,該變量是從名為 sys 的模塊獲得的:
1 2 3 4 5 6 |
>>> import sys >>> sys.path ['', '/home/roark/personal', '/home/roark/workdir', '/usr/local/Python/3.7/lib', '/usr/local/python3.7/site-packages', '/usr/local/Python/3.7/python37.zip', '/usr/local/Python/3.7/lib/python3.7'] |
因此,為了確保找到我們的模塊,我們需要執行以下操作之一:
- 將
mod.py放置在輸入腳本所在的目錄或當前工作目錄中(如果是交互式的話) - 在啟動解釋器之前修改”PYTHONPATH”環境變量以包含”mod.py”所在的目錄(或將”mod.py”放入”PYTHONPATH”變量已包含的目錄之一)
實際上還有一個附加選項:我們可以將模塊文件放在您選擇的任何目錄中,然后在運行時修改 sys.path 使其包含該目錄。例如,在這種情況下,我們可以將”mod.py”放在目錄”/home/sarah/”中,然后發出以下語句:
1 2 3 4 5 6 7 8 |
>>> sys.path.append(r'/home/sarah/') >>> sys.path ['', '/home/roark/personal', '/home/roark/workdir', '/home/sarah', '/usr/local/Python/3.7/lib', '/usr/local/python3.7/site-packages', '/usr/local/Python/3.7/python37.zip', '/usr/local/Python/3.7/lib/python3.7'] >>> import mod |
導入模塊后,我們可以使用模塊的file屬性來確定找到該模塊的位置:
1 2 3 4 5 6 7 |
>>> import mod >>> mod.__file__ '/home/sarah/mod.py' >>> import datetime >>> datetime.__file__ '/usr/local/Python/3.7/lib/datetime.py' |
file的目錄部分應該是 sys.path 中的目錄之一。
