模組就好比是工具包,要想使用這個工具包中的工具(就好比函式),就需要匯入這個模組。
模組的本質就是乙個.py檔案,裡面包含已經封裝好的類、方法等。模組匯入也即是使用這個py檔案中的變數、方法。
**執行到模組匯入位置時,會預先載入(執行)匯入的模組。
注意:使用from匯入變數,而那些變數碰巧和作用域中現有的變數同名,本地變數就會被悄悄地覆蓋掉例如:時間模組time帶有多個時間方面的函式,而random模組主要是實現隨機功能。
python語言中主要有三種方式有5種形式:
import 模組(import 模組.方法 錯誤)
import 模組 as 別名
from 模組 import 方法(變數)
from 模組 import 方法(變數) as 別名
from 模組 import *
注意:模組名一般為檔名,且符合python識別符號規則(由數字字母下劃線組成,數字不能開頭)
import time
a = time.time(
)print
(a)
# 引數為模組名
module =
__import__
("time"
)print
(module.time(
))
# 引數一為模組物件,引數二為模組方法
module_fun =
getattr
(time,
'time'
)print
(module_fun(
))
# 框架思想
import sys
action_list = sys.argv # 得到乙個列表
moudle =
__import__
(action_list[1]
)fun =
getattr
(moudle, action_list[2]
)print
(fun(
))
當你匯入乙個模組,python解析器對模組位置的搜尋順序如下
import sys
print
(sys.path)
#結果['',
#當前路徑
'/home/yz/desktop/test'
,#專案路徑
'/usr/lib/python35.zip'
,'/usr/lib/python3.5'
,'/usr/lib/python3.5/plat-x86_64-linux-gnu'
,'/usr/lib/python3.5/lib-dynload'
,'/usr/local/lib/python3.5/dist-packages'
,'/usr/lib/python3/dist-packages'
]
import random
random.__file__
#結果'/usr/lib/python3.5/random.py'
注意:路徑的修改只對當前檔案有效在終端命令列之中,a匯入模組b,當b修改之後,a仍然使用b被修改之前的**。
這個時候就需要重新匯入。使用reload
form importlib import reload
reload(模組名)
「import 模組」屬於淺拷貝,如果a修改了匯入的b變數,此時c匯入該b變數還是未修改的b.
清楚模組與包的區別!
1.模組:單個的py檔案
2.包:含有__init__.py檔案的資料夾。裡面一般有多個.py檔案。
注意:如果包的__init__.py檔案是空的,則 「from 包 import * 」 是無效的。對於 『from 模組 import *』:a檔案裡有乙個列表__all__=[ ],那麼其它檔案只能匯入a檔案中列表__all__的元素限定的變數。
_name_
if __name__ ==
'__main__'
在a檔案中,其屬性__name__的值是_main_;而在其它檔案中,匯入的a.__name__的值是a的檔案(模組)名。 Python包 模組和包匯入詳解(import)
1.模組 module 1.1 模組定義 通常模組為乙個.py檔案,其他可作為module的檔案型別還有 pyo pyc pyd so dll module 可看作乙個工具類,可共用或者隱藏 細節,將相關 放置在乙個module以便讓 更好用 易懂,讓coder重點放在高層邏輯上。module能定義...
Python學習之路 模組詳解及import本質上
1.定義 模組 用來從邏輯上組織python 變數,函式,類,邏輯 實現乙個功能 本質就是.py結尾的python檔案。檔名 test.py,對應的模組名 test 包 用來從邏輯上組織模組的,本質是乙個資料夾或者目錄 必須帶乙個 init py檔案 2.匯入方法 import module nam...
python 匯入模組
最近開始學習python,遇到一些匯入模組的問題,花了幾分鐘終於琢磨明白了,給初學者介紹幾種型別 一 test sys test1 nv1.py nv2.py nv1.py 如下 classdog defadd self a,b self.a a self.b b c self.a self.b r...