歡迎光臨
每天分享高質量文章

關於Python包和模塊的10個知識清單

來自:Python之禪(微信號:VTtalk)

最近來了不少新人,謝謝大家的關註,有同學問到關於模塊與包的問題,特給你們總結關於Python包與模塊的10個知識清單。

0、一個模塊(module)就是一個py檔案,模塊的名字就是該檔案的名字(不包含後綴)

1、一個 包(package)就是一個檔案夾,(Python2規定該檔案夾必須包含一個 __init__.py ,Python3沒有要求),包名就是檔案夾名。

2、按 import 進來的物件不同分為4種場景:

1. import   # 匯入一個包
2. import    # 匯入一個模塊
3. from  import or

subpackage or object>  # 從一個包中匯入模塊/子包/物件
4. from import  # 從模塊中匯入物件

3、解釋器會按照sys.path串列的順序來查找被引入的包或模塊名字。

>>> import sys
>>> import pprint
>>> pprint.pprint(sys.path)
['',
 'C:\Python\Python35-32\python35.zip',
 'C:\Python\Python35-32\DLLs',
 'C:\Python\Python35-32\lib',
 'C:\Python\Python35-32',
 'C:\Python\Python35-32\lib\site-packages']

優先加載當前工作目錄下的模塊,如果你的專案中使用了與內建模塊中同名的包或模塊名,就會遇到沒有xx屬性之類的報錯提示,新手特喜歡乾這種事。

4、你可以操作 sys.path,使得其它路徑的檔案加入到Path中,使之能被解釋器發現。

# test.py
import sys, os

# 當前目錄沒有hi模塊,報錯找不到模塊
import hi 
Traceback (most recent call last):
ImportError: No module named hi

# hi模塊所在位置: /data/hi.py
# 將hi所在模塊加入sys.path
sys.path.append("/data")

# 可以正常工作了
import hi

5、另外一種加載模塊的方法:如果你的模塊不在 sys.path 下麵,除了第4條建議外,還可以使用 imp 模塊中的方法 imp.load_source

import imp

imp.load_source("hi", "C://data/hi.py")
import hi

# 可以自己指定模塊的名字,相當與 import hi as h2
imp.load_source("h2", "C://data/hi.py")
import h2

6、import  module 時,模塊中所有的代碼將被執行(類物件,函式物件將被創建,不會被呼叫),import package 時,__init__.py 檔案中的代碼也將被執行。

7、模塊的 __file__屬性

匯入模塊時,可以通過模塊的 __file__屬性查看模塊所在磁盤的路徑位置

>>> import requests
>>> requests.__file__
'D:\Programs\Anaconda3\envs\py_test\lib\site-packages\requests\__init__.py'

8、永遠不要使用 from   import * ,有不可預知的風險


●編號542,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

 

演算法與資料結構

更多推薦25個技術類公眾微信

涵蓋:程式人生、演算法與資料結構、黑客技術與網絡安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

    赞(0)

    分享創造快樂