1.1 python模塊搜索路徑
1.1.1 sys.path
描述
python通過(guò)模塊搜索路徑找到模塊文件進(jìn)行導(dǎo)入。
順序 | 路徑 |
---|---|
1 | 程序主目錄 |
2 | PYTHONPATH目錄(若有),用于路徑拓展 |
3 | 標(biāo)準(zhǔn)庫(kù)目錄 |
4 | .pth文件(若有),用于路徑拓展 |
程序啟動(dòng)時(shí),按上面順序?qū)⑦@4個(gè)路徑存放sys.path列表,導(dǎo)入并搜索模塊時(shí),根據(jù)從左至右的順序搜索sys.path。
NO | 類型 | 描述 |
---|---|---|
1 | sys.path列表 | 程序運(yùn)行時(shí)可以動(dòng)態(tài)更新sys.path進(jìn)行修改模塊搜索路徑。 程序結(jié)束后,更新的sys.path會(huì)失效。 |
2 | PYTHONPATH和.pth | 通過(guò)PYTHONPATH和.pth定制模塊搜索路徑。 程序結(jié)束后,仍然存在本地配置。 |
文件內(nèi)容
E:\\documents\\F盤\\testsyspath.py
# 打開(kāi)cmd 執(zhí)行下面示例
import sys,os
def testpath():
print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))
curpath="解釋器交互模式執(zhí)行" if sys.path[0]=='' else "頂層文件模式執(zhí)行"
print("{}的sys.path為:{}".format(curpath,sys.path))
sys.path.append("E:\\\\mysitepack")
print("添加路徑后{}的sys.path為:{}".format(curpath,sys.path))
if __name__ == '__main__':
testpath()
示例
# 打開(kāi)cmd 執(zhí)行下面示例
E:\\documents\\F盤>python
>>> import testsyspath
>>> testsyspath.testpath()
run:E:\\documents\\F盤\\testsyspath.py
__name__:testsyspath
# 交互模式下,程序目錄為空,即解釋器當(dāng)前路徑
解釋器交互模式執(zhí)行的sys.path為:['', 'D:\\\\python3\\\\python37.zip', 'D:\\\\python3\\\\DLLs', 'D:\\\\python3\\\\lib', 'D:\\\\python3', 'D:\\\\python3\\\\lib\\\\site-packages']
# sys.path.append 動(dòng)態(tài)添加搜索路徑
添加路徑后解釋器交互模式執(zhí)行的sys.path為:['', 'D:\\\\python3\\\\python37.zip', 'D:\\\\python3\\\\DLLs', 'D:\\\\python3\\\\lib', 'D:\\\\python3', 'D:\\\\python3\\\\lib\\\\site-packages', 'E:\\\\mysitepack']
>>> exit()
# 文件模式下,程序目錄為py執(zhí)行路徑
E:\\documents\\F盤>python testsyspath.py
run:E:\\documents\\F盤\\testsyspath.py
__name__:__main__
頂層文件模式執(zhí)行的sys.path為:['E:\\\\documents\\\\F盤', 'D:\\\\python3\\\\python37.zip', 'D:\\\\python3\\\\DLLs', 'D:\\\\python3\\\\lib', 'D:\\\\python3', 'D:\\\\python3\\\\lib\\\\site-packages']
添加路徑后頂層文件模式執(zhí)行的sys.path為:['E:\\\\documents\\\\F盤', 'D:\\\\python3\\\\python37.zip', 'D:\\\\python3\\\\DLLs', 'D:\\\\python3\\\\lib', 'D:\\\\python3', 'D:\\\\python3\\\\lib\\\\site-packages', 'E:\\\\mysitepack']
1.2 python包模塊別名
python通過(guò)as關(guān)鍵字給模塊或模塊屬性取別名,達(dá)到簡(jiǎn)寫和避免名字沖突的效果。
1.2.1 as別名
用法
import module1 [as identifier1] (, module2 [as identifier2])
from module import var1 ([as iden1](,var2 [as iden2]))
import dir1.dir2.mod as identifier1
from dir1.dir2 import mod as identifier1
from dir1.dir2.mod import x as identifier1
描述
as identifier1:
NO | 描述 |
---|---|
1 | 通過(guò)as給模塊或?qū)傩匀e名,之后通過(guò)別名訪問(wèn)模塊對(duì)象屬性。 |
2 | 用as后,不可通過(guò) “原模塊原名”訪問(wèn)模塊屬性,不可訪問(wèn)“原屬性名”。 |
3 | 用as后,模塊搜索路徑存放的鍵為模塊原名,而非別名。 |
4 | 用as后,通過(guò)字符串方式訪問(wèn)的用“原名”,通過(guò)變量名方式訪問(wèn)的用“別名”。 |
文件內(nèi)容
E:\\documents\\F盤\\testas.py
import os
tyxt='梯閱線條'
def testas():
print("run:{}".format(os.path.abspath(__file__)))
print("__name__:{}".format(__name__))
示例
# 打開(kāi)cmd 執(zhí)行下面示例
E:\\documents\\F盤>python
# as 模塊取別名
>>> import testas as tas
# 模塊別名訪問(wèn)屬性
>>> tas.tyxt
'梯閱線條'
>>> tas.testas()
run:E:\\documents\\F盤\\testas.py
__name__:testas
# 原模塊名可訪問(wèn)
>>> testas.tyxt
Traceback (most recent call last):
File "" , line 1, in
NameError: name 'testas' is not defined
# as 屬性取別名
>>> from testas import testas as ts
# 屬性別名可訪問(wèn)
>>> ts()
run:E:\\documents\\F盤\\testas.py
__name__:testas
# 原屬性名不可訪問(wèn)
>>> testas()
Traceback (most recent call last):
File "" , line 1, in
NameError: name 'testas' is not defined
-
模塊
+關(guān)注
關(guān)注
7文章
2714瀏覽量
47508 -
AS
+關(guān)注
關(guān)注
0文章
27瀏覽量
26093 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84727
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論