新聞中心
有同學(xué)問題關(guān)于模塊與包的問題,特給新人總結(jié)的關(guān)于Python包與模塊的10個知識清單。

成都創(chuàng)新互聯(lián)公司網(wǎng)絡(luò)公司擁有十余年的成都網(wǎng)站開發(fā)建設(shè)經(jīng)驗,成百上千客戶的共同信賴。提供成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)站定制、賣鏈接、建網(wǎng)站、網(wǎng)站搭建、成都響應(yīng)式網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)
0、一個模塊(module)就是一個py文件,模塊的名字就是該文件的名字(不包含后綴)
1、一個 包(package)就是一個文件夾,(Python2規(guī)定該文件夾必須包含一個 __init__.py,Python3沒有要求),包名就是文件夾名。
2、按 import 進(jìn)來的對象不同分為4種場景:
- 1. import
# 導(dǎo)入一個包 - 2. import
# 導(dǎo)入一個模塊 - 3. from
import # 從一個包中導(dǎo)入模塊/子包/對象 - 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']
優(yōu)先加載當(dāng)前工作目錄下的模塊,如果你的項目中使用了與內(nèi)建模塊中同名的包或模塊名,就會遇到?jīng)]有xx屬性之類的報錯提示,新手特喜歡干這種事。
4、你可以操作 sys.path,使得其他路徑文件加入到Path中,使之能被解釋器發(fā)現(xiàn)。
- # test.py
- import sys, os
- # 當(dāng)前目錄沒有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,除了第5條方法在外,還可以使用 imp 模塊中的方法 imp.load_source
- import imp
- imp.load_source("hi", "C://data/hi.py")
- import hi
- # 可以自己指定模塊的名字,相當(dāng)與 import hi as h2
- imp.load_source("h2", "C://data/hi.py")
- import h2
6、import module 時,模塊中所有的代碼將被執(zhí)行(類對象,函數(shù)對象將被創(chuàng)建,不會被調(diào)用),import package 時, init .py 文件中的代碼也將被執(zhí)行。 7、模塊的 __file__ 屬性
導(dǎo)入模塊時,可以通過模塊的 __file__ 屬性查看模塊所在磁盤的路徑位置
- >>> import requests
- >>> requests.__file__
- 'D:\\Programs\\Anaconda3\\envs\\py_test\\lib\\site-packages\\requests\\__init__.py'
8、永遠(yuǎn)不要使用 from import * ,有不可預(yù)知的風(fēng)險
9、沒有了。
文章標(biāo)題:關(guān)于Python包和模塊的10個知識清單
分享鏈接:http://fisionsoft.com.cn/article/dpophhj.html


咨詢
建站咨詢
