Ⅰ python import用法
python中的"import"表示導入的意思。
python中的"import"一般用於導入一些函數庫,以便於在下面的程序中調用導入的函數庫裡面的函數,類似於c++編程語言裡面的include。通常模塊為一個文件,直接使用import來導入就好了。可以作為mole的文件類型有".py"、".pyo"、".pyc"、".pyd"、".so"、".dll"。
import語句的用途和注意事項
1、通過一定的方式,搜尋要導入的文件。
2、如果需要,就編譯這個文件。
3、運行這個文件。
但是需要注意的是所有這三個步驟,都只是文件再第一次導入的時候才會執行,如果文件已經導入了,後續的import會直接從內存裡面找到已經載入的模塊使用,換句話說此時import不會執行上面的3個步驟。
Ⅱ Python 中的import 機制
解釋器 在執行語句時,遵循作用域原則。因為這和作用域有關系, 如果在頂層導入模塊,此時它的作用域是全局的;如果在函數內部導入了模塊,那它的作用域只是局部的 ,不能被其它函數使用。如果其它函數也要用到這個模塊,還需要再次導入比較麻煩。
在用import語句導入模塊時最好按照這樣的順序:
絕對路徑 就是文件的真正存在的路徑,是指從硬碟的根目錄(盤符)開始,進行一級級目錄指向文件。
相對路徑 就是以當前文件為基準進行一級級目錄指向被引用的資源文件。
以下是常用的表示當前目錄和當前目錄的父級目錄的標識符
形如from moleB import ClassB語句,根據Python內部import機制,執行細分步驟:
總結:from moleB import ClassB有兩個過程,先from mole,後import ClassB。
當然將moleA.py語句 from moleB import ClassB改為:import moleB,將在第二次執行moleB.py語句from moleA import ClassA時報錯:ImportError: cannot import name 『classA』
在一個文件下同時有 init .py文件、和其他模塊文件時,該文件夾即看作一個包(package)。包的導入 和模塊導入基本一致,只是導入包時,會執行這個 init .py,而不是模塊中的語句。
而且,如果只是單純地導入包【形如:import xxx】,而包的 init .py中有沒有明確地的其他初始化操作,則:此包下的模塊 是不會被自動導入的。當然該包是會成功導入的,並將包名稱放入當前.py的Local命名空間中。
參考文章:
Python中import機制
Python 3.x可能是史上最詳解的【導入(import)】
在Python中以絕對路徑或者相對路徑導入文件的方法
Python的模塊引用和查找路徑
Ⅲ python導入(import)文件夾下python子函數的方法
(1)主程序main.py與模塊程序mod1.py在同一目錄下。
--src
|--mod1.py
|--main.py
直接在main.py中導入模塊mod1.py,即 import mod1 或 from mod1 import *
(2)主程序main.py所在目錄是模塊程序mod.py所在目錄的父目錄。
--src
|--mod1.py
|--main.py
---mod2
|--mod2.py
先需要在mod2文件夾中建立空文件__init__.py
然後在main.py中導入模塊mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
(3)主程序main.py導入上層目錄中的模塊或其他目錄(平級)下的模塊。
--src
|--mod1.py
---mod2
|--mod2.py
---sub
|--main.py
先需要在mod2文件夾中建立空文件__init__.py,而src文件夾下不需要建立
然後進入主程序main.py所在的路徑,執行python main.py
在main.py中導入模塊mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
執行前在main.py中加入:
import sys
sys.path.append("..")
import mod1
import mod2.mod2
Ⅳ python中模塊導入的方法
python中模塊導入的方法:
方式一:使用 import 語句來引入模塊
直接使用關鍵詞import,後面跟具體的模塊名稱,就可以導入某一個模塊。同一個模塊不管執行了多少次import,都只會被導入一次,以防止模塊被一遍又一遍的執行。
方式二:使用from…import 語句來引入模塊
在使用import語句導入模塊時會將整個模塊引入進來,而使用from...import 語句則是從模塊中導入一個指定的部分到當前命名空間中。如上面代碼中則只會導入pprint模塊中的pprint函數,其他函數並不會導入。
方式三:使用from…import語句來引入模塊
在多數情況下,Python程序員都不會使用這個功能,因為它在解釋器中引入了一組未知的名稱,而它們很可能會覆蓋一些你已經定義過的東西。
注意通常情況下從一個模塊或者包內調入 * 的做法是不太被接受的, 因為這通常會導致代碼的可讀性很差。不過,在互動式編譯器中為了節省打字可以這么用。
模塊的好處
1、大大提高了代碼的可維護性。
2、代碼不必從零開始,一個模塊編寫完畢之後,其他模塊可以直接調用,節約了工作時間。
3、避免函數名稱和變數名稱重復,在不同的模塊中可以存在相同名字的函數名和變數名,但是盡量不要和系統內置的模塊名稱重復。
Ⅳ 詳解Python中import方法引入模塊
在python用import或者from...import或者from...import...as...來導入相應的模塊,作用和使用方法與C語言的include頭文件類似。其實就是引入某些成熟的函數庫和成熟的方法,避免重復造輪子,提高開發速度。
python的import方法可以引入系統的模塊,也可以引入我們自己寫好的共用模塊,這點和php非常相似,但是它們的具體細節還不是很一樣。因為php是在引入的時候指明引入文件的具體路徑,而python中不能夠寫文件路徑進行引入。
下面總結一下import的幾種情況:
python包含子目錄中的模塊方法比較簡單,關鍵是能夠在sys.path裡面找到通向模塊文件的路徑。
下面將具體介紹幾種常用情況:
(1)主程序與模塊程序在同一目錄下:
如下面程序結構:
`-- src
|-- mod1.py
`-- test1.py
若在程序test1.py中導入模塊mod1, 則直接使用import mod1或from mod1 import *;
(2)主程序所在目錄是模塊所在目錄的父(或祖輩)目錄
如下面程序結構:
`-- src
|-- mod1.py
|-- mod2
| `-- mod2.py
`-- test1.py
若在程序test1.py中導入模塊mod2, 需要在mod2文件夾中建立空文件__init__.py文件(也可以在該文件中自定義輸出模塊介面); 然後使用 from mod2.mod2 import * 或import mod2.mod2.
(3)主程序導入上層目錄中模塊或其他目錄(平級)下的模塊
如下面程序結構:
`-- src
|-- mod1.py
|-- mod2
| `-- mod2.py
|-- sub
| `-- test2.py
`-- test1.py
若在程序test2.py中導入模塊mod1和mod2。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立該文件。然後調用方式如下:
下面程序執行方式均在程序文件所在目錄下執行,如test2.py是在cd sub;之後執行python test2.py
而test1.py是在cd src;之後執行python test1.py; 不保證在src目錄下執行python sub/test2.py成功。
import sys
sys.path.append("..")
import mod1
import mod2.mod2
Ⅵ Python調用自定義模塊方法有什麼
import語句
自定義模塊可以採用import語句來進行引入,其操作步驟是先導入模塊,再調用模塊中包含的函數,可將自定義模塊放入當前目錄,便於解釋器路徑搜索,以下是導入自定義hello.py模塊,並調用World函數的實例:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
#導入模塊
import hello
#現在可以調用模塊里包含的函數了
support.print_func("World")
輸出結果為:
Hello World!
以上實例也可以採用from…import的方法進行實現,是指從一個模塊中導入指定的部分到當前命名空間中,以上功能可寫成:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
from hello import World
如果要將模塊中的所有內容全部導入當前命名空間,可採用from…import*的方法,具體實例如下:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
from hello import *
還需注意,當要導入一個模塊時,Python解釋器會對模塊的位置進行搜索,具體搜索順序規律如下:
1.當前目錄;
2.如果不在當前目錄,Python則搜索在shell變數PYTHONPATH下的每個目錄;
3.如果都找不到,Python會察看默認路徑。