python有兩種導(dǎo)入模塊的方法。兩種都有用,你應(yīng)該知道什么時候使用哪一種方法。一種方法,importmodule,導(dǎo)入后,如果想要用module中的屬性或方法,需要module.屬性(方法),但是它與第一種有著細微但重要的區(qū)別。
下面是frommoduleimport的基本語法:
fromUserDictimportUserDict
它與你所熟知的importmodule語法很相似,但是有一個重要的區(qū)別:UserDict被直接導(dǎo)入到局部名字空間去了,所以它可以直接使用,而不需要加上模塊名的限定。你可以導(dǎo)入獨立的項或使用frommoduleimport*來導(dǎo)入所有東西。
注意
Python中的frommoduleimport*像Perl中的usemodule;Python中的importmodule像Perlrequiremodule。中的
注意
Python中的frommoduleimport*像Java中的importmodule.*;Python中的importmodule像Java中的importmodule。
例.importmodulevs.frommoduleimport
>>>importtypes
>>>types.FunctionType1
>>>FunctionType2
Traceback(innermostlast):
File"",line1,in?
NameError:Thereisnovariablenamed'FunctionType'
>>>fromtypesimportFunctionType3
>>>FunctionType4
1types模塊不包含方法,只是表示每種Python對象類型的屬性。注意這個屬性必需用模塊名types進行限定。
2FunctionType本身沒有被定義在當前名字空間中;它只存在于types的上下文環(huán)境中。
3這個語法從types模塊中直接將FunctionType屬性導(dǎo)入到局部名字空間中。
4現(xiàn)在FunctionType可以直接使用,與types無關(guān)了。
什么時候你應(yīng)該使用frommoduleimport?
如果你要經(jīng)常訪問模塊的屬性和方法,且不想一遍又一遍地敲入模塊名,使用frommoduleimport。
如果你想要有選擇地導(dǎo)入某些屬性和方法,而不想要其它的,使用frommoduleimport。
如果模塊包含的屬性和方法與你的某個模塊同名,你必須使用importmodule來避免名字沖突。
除了這些情況,剩下的只是風格問題了,你會看到用兩種方式編寫的Python代碼。
小心
盡量少用frommoduleimport*,因為判定一個特殊的函數(shù)或?qū)傩允菑哪膩淼挠行├щy,并且會造成調(diào)試和重構(gòu)都更困難。
以上內(nèi)容為大家介紹了python之import和fromimport,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。http://m.2667701.com/