python的import原理和方式總結


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 中的目錄之一。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM