導(dǎo)入 import module_name
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了鎮(zhèn)原免費(fèi)建站歡迎大家使用!
調(diào)用 module_name.function_name()
在這種情況中,不會(huì)出現(xiàn)下面兩種方式的缺點(diǎn),即具有相同函數(shù)名的問題,因?yàn)橐粋€(gè)文件中不存在兩個(gè)相同的文件名。但缺點(diǎn)是能不清晰顯示出使用到的函數(shù),調(diào)用的時(shí)候也需要重復(fù)寫模塊名。
導(dǎo)入 from module_name import function_name1 , (function_name2...)
調(diào)用 function_name()
在這種情況中,雖然能清楚的表示出使用到的函數(shù),如果是多個(gè)不同的模塊,但其中的函數(shù)名有重疊時(shí),后導(dǎo)入的模塊函數(shù)為能使用的函數(shù),即產(chǎn)生覆蓋函數(shù)。
導(dǎo)入 from module_name import *
調(diào)用 function_name()
這種方法不推薦使用,因?yàn)樗狭饲皟煞N方式的缺點(diǎn),即導(dǎo)入不清晰,調(diào)用全部函數(shù)會(huì)更容易造成覆蓋函數(shù)。
這個(gè)問題涉及到包和模塊管理。包名和模塊名一般是小寫。你的文件是下面的結(jié)構(gòu),需要?jiǎng)?chuàng)建空文件 b/__init__.py,將b目錄變成package。a/a.py
12
from b.c import indexindex()
b/c.py
12
def index(): print("hello")
b/__init__.pya/a.py 里面有兩種引用方式,相對(duì)引用和絕對(duì)引用:# 如果a.py是 library,兩種引用方式都可以
1
from ..b.c import index
# 如果a.py是 executable,必須使用絕對(duì)引用
1
from b.c import index
如果使用絕對(duì)引用,需要確保b所在目錄在PYTHONPATH (sys.path)里面,比如可以這樣執(zhí)行:
1
env PYTHONPATH=. python a/a.py
python中模塊導(dǎo)入的方法:
方式一:使用 import 語(yǔ)句來引入模塊
直接使用關(guān)鍵詞import,后面跟具體的模塊名稱,就可以導(dǎo)入某一個(gè)模塊。同一個(gè)模塊不管執(zhí)行了多少次import,都只會(huì)被導(dǎo)入一次,以防止模塊被一遍又一遍的執(zhí)行。
方式二:使用from…import 語(yǔ)句來引入模塊
在使用import語(yǔ)句導(dǎo)入模塊時(shí)會(huì)將整個(gè)模塊引入進(jìn)來,而使用from...import 語(yǔ)句則是從模塊中導(dǎo)入一個(gè)指定的部分到當(dāng)前命名空間中。如上面代碼中則只會(huì)導(dǎo)入pprint模塊中的pprint函數(shù),其他函數(shù)并不會(huì)導(dǎo)入。
方式三:使用from…import語(yǔ)句來引入模塊
在多數(shù)情況下,Python程序員都不會(huì)使用這個(gè)功能,因?yàn)樗诮忉屍髦幸肓艘唤M未知的名稱,而它們很可能會(huì)覆蓋一些你已經(jīng)定義過的東西。
注意通常情況下從一個(gè)模塊或者包內(nèi)調(diào)入 * 的做法是不太被接受的, 因?yàn)檫@通常會(huì)導(dǎo)致代碼的可讀性很差。不過,在交互式編譯器中為了節(jié)省打字可以這么用。
模塊的好處
1、大大提高了代碼的可維護(hù)性。
2、代碼不必從零開始,一個(gè)模塊編寫完畢之后,其他模塊可以直接調(diào)用,節(jié)約了工作時(shí)間。
3、避免函數(shù)名稱和變量名稱重復(fù),在不同的模塊中可以存在相同名字的函數(shù)名和變量名,但是盡量不要和系統(tǒng)內(nèi)置的模塊名稱重復(fù)。
(1)主程序main.py與模塊程序mod1.py在同一目錄下。
--src
|--mod1.py
|--main.py
直接在main.py中導(dǎo)入模塊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中導(dǎo)入模塊mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
(3)主程序main.py導(dǎo)入上層目錄中的模塊或其他目錄(平級(jí))下的模塊。
--src
|--mod1.py
---mod2
?|--mod2.py
---sub
?|--main.py
先需要在mod2文件夾中建立空文件__init__.py,而src文件夾下不需要建立
然后進(jìn)入主程序main.py所在的路徑,執(zhí)行python main.py
在main.py中導(dǎo)入模塊mod2.py,即 import mod2.mod2 或 from mod2.mod2 import *
執(zhí)行前在main.py中加入:
import sys
sys.path.append("..")
import mod1
import mod2.mod2