2.4import()動態匯入
import 語句本質上就是呼叫內建函式__import__(),我們可以通過它實現動態匯入,即給__import__()動態傳遞不同的的引數值,就能匯入不同的模組。
【例】使用__import__()動態匯入指定的模組
s =
'math'
m =__import__
(s)# 匯入後生成的模組物件引用給變數m
print
(m.pi)
執行結果:
注意:一般不建議我們自行使用__import__()匯入,其行為在 python2 和 python3 中有差異,會導致意外錯誤。如果需要動態匯入可以使用 importlib 模組。
【例2】使用python官方推薦的importlib實現動態匯入
2.5 模組的載入問題
當匯入乙個模組時, 模組中的**都會被執行。不過,如果再次匯入這個模組,則不會再次執行。
python 的設計者為什麼這麼設計?因為,匯入模組更多的時候需要的是定義模組中的變數、 函式 、物件等。 這些並不需要反覆定義和執行。「只匯入一次(import-only-once)」就成了一種優化。
乙個模組無論匯入多少次,這個模組在整個直譯器程序內有且僅有乙個例項物件。
【例】.1test02.py 的源**:
print
('test02正在被載入...'
)def
add(a, b)
:return a + b
.2
在test03中執行以下**
import test02
執行結果:
分析:這個執行結果進一步向我們展示了,import的行為其實就是在程式中執行一遍import模組中的**。
.3若在test03中執行以下**:
import test02
import test02
import test02
執行結果:
分析:由此結果可見,import test02的執行只執行了一遍,可以印證:
乙個模組無論匯入多少次,這個模組在整個直譯器程序內有且僅有乙個例項物件。
【例】
import test02
import test02
print
('###############'
)import importlib
importlib.
reload
(test02)
webpack中require和import的區別
經典的commonjs同步語法如下 var a require a a.show 此時webpack會將a.js打包進引用它的檔案中。這是最普遍的情形,不必贅述。在commonjs中有乙個modules async a規範,裡面定義了require.ensure語法。webpack實現了它,作用是可...
pycharm安裝多個虛擬環境後,import失敗
現象 本人有安裝多個虛擬環境。但匯入包時,總是各種報錯。但是我明明有安裝的,最後發現是環境變數沒有把pipenv的路徑加進去。加入環境變數 import sys print python s on s sys.version,sys.platform sys.path.extend c users ...
sas中csv等常用格式資料利用import匯入
csv格式資料是以逗號為分割符號的一種資料記錄形式,可以通過以下 匯入 import data in csv format proc import out work.exer2 datafile c users lenovo desktop exer1.csv repace run xls格式資料是...