關於Python包和模組的10個知識清單
題圖:Photo by Wang Xi on Unsplash
最近來了不少新人,謝謝大家的關注,有同學問到關於模組與包的問題,特給你們總結關於Python包與模組的10個知識清單。
0、一個模組(module)就是一個py檔案,模組的名字就是該檔案的名字(不包含字尾)
1、一個 包(package)就是一個資料夾,(Python2規定該資料夾必須包含一個 __init__.py
,Python3沒有要求),包名就是資料夾名。
2、按 import 進來的物件不同分為4種場景:
1. import <package> # 匯入一個包
2. import <module> # 匯入一個模組
3. from <package> import <module or subpackage or object> # 從一個包中匯入模組/子包/物件
4. from <module> import <object> # 從模組中匯入物件
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 <module> import * ,有不可預知的風險
9、微信又改版了,建議大家將公眾號設定為星標,第一時間收到我給你的推送,愛你們。
點贊是最好的支援
往期閱讀:速來領獎,還沒來兌獎的抓緊時間,過了明天就失效了。
相關文章
- 這三個關於Python包匯入的知識點你知道嗎Python
- 這三個關於Python包匯入的知識點你知道嗎?Python
- 關於高效使用Python字典的清單Python
- 關於Python Number 相關的知識!Python
- 關於range的一個知識點
- 前端關於單點登入的知識前端
- BAT等大廠Android面試書單和知識點清單BATAndroid面試
- 關於 JavaScript 字串的一個小知識JavaScript字串
- 關於redo的幾個小知識點
- Python模組和包Python
- 關於C++ scanf的一個小知識C++
- 關於animation和transition一點知識
- Python包和模組管理Python
- 關於高水位的知識
- 一個關於風險和投資組合的內部知識分享文件
- OA知識普及之OA相關模組——OA中的知識管理
- 關於前端應該知道的5個小知識前端
- Python中關於Thread的一點小知識Pythonthread
- 關於Hibernate和hql語句的相關知識點
- 作為一個python開發者需要知道的關於伺服器的知識Python伺服器
- 初識python必知的6個知識點Python
- 關於記憶體管理單元須要掌握的相關知識記憶體
- 關於LLC知識1
- python包和模組的內容整理Python
- 關於知識付費的思考
- 關於序列化的知識
- 關於null值的小知識Null
- 關於SFV的小知識(轉)
- 十個關於網際網路圈的冷知識
- 關於散裝和盒裝CPU小知識
- 關於SAP ABAP字元變數和字串變數字元個數的一個知識點,和一個血案字元變數字串
- Python變數的簡單知識Python變數
- 【Python】基於Django Web開發清單PythonDjangoWeb
- Python提高:關於閉包和裝飾器Python
- Python的包(package)和模組(module)介紹PythonPackage
- SEO關於探討URL的知識!
- 關於SQL優化的小知識SQL優化
- 關於機器學習需要了解的知識機器學習