python三种导入模块的方法和区别
方法一:
import modname模塊是指一個可以交互使用,或者從另一Python 程序訪問的代碼段。只要導入了一個模塊,就可以引用它的任何公共的函數、類或屬性。模塊可以通過這種方法來使用其它模塊的功能。
用import語句導入模塊,就在當前的名稱空間(namespace)建立了一個到該模塊的引用.這種引用必須使用全稱,也就是說,當使用在被導入模塊中定義的函數時,必須包含模塊的名字。所以不能只使用 funcname,而應該使用 modname.funcname
方法二:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' from modname import funcname from modname import fa, fb, fc或者
from modname import *與第1種方法的區別:funcname 被直接導入到本地名字空間去了,所以它可以直接使用,而不需要加上模塊名的限定* 表示,該模塊的所有公共對象(public objects)都被導入到 當前的名稱空間,也就是任何只要不是以”_”開始的東西都會被導入。
modname沒有被定義,所以modname.funcname這種方式不起作用。并且,如果funcname如果已經被定義,它會被新版本(該導入模塊中的版本)所替代。如果funcname被改成指向其他對象,modname不能不會覺察到。
建議:
1)如果你要經常訪問模塊的屬性和方法,且不想一遍又一遍地敲入模塊名,使用 from module import
2)如果你想要有選擇地導入某些屬性和方法,而不想要其它的,使用 from module import
3)如果模塊包含的屬性和方法與你的某個模塊同名,你必須使用import module來避免名字沖突
4)盡量少用 from module import * ,因為判定一個特殊的函數或屬性是從哪來的有些困難,并且會造成調試和重構都更困難。
方法三:
內建函數__import__()
除了前面兩種使用import關鍵字的方法以外,我們還可以使用內建函數 __ import __ () 來導入 module。兩者的區別是,import 后面跟的必須是一個類型(type),而__import__()
的參數是一個字符串,這個字符串可能來自配置文件,也可能是某個表達式計算結果。例如:
mymodule = __import__ (’module_name’)附注:
1)模塊的內容都放在一個模塊文件中,如 mymodule 的內容應該放在PYTHONPATH 目錄下的一個mymodule.py中,C實現的除外
2)包可以將幾個模塊名稱空間組織起來, 如A.b 就表示在包A中的一個子模塊b
可以單獨導入某一個子模塊,如Python文檔中給出的例子
這樣必須使用全稱對里面的對象進行引用,如:
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)還可以使用下面的語句來加載echo子模塊
from Sound.Effects import echo它在沒有包前綴的情況下也可以使用, 所以它可以如下方式調用:
echo.echofilter(input, output, delay=0.7, atten=4)不主張從一個包或模塊中用import * 導入所有模塊,因為這樣的通常會導致可讀性很差。
from Package import specific_submodule的用法并沒有錯,實際上這還是推薦的用法,除非導入的模塊需要使用其它包中的同名子模塊(the importing module needs to use submodules with the same name from different packages).
綜上所述,一般情況應該使用import , 但有幾個例外
1)module文檔告訴你要用from-import的
2)導入一個包組件。需要一個包里面的某個子模塊,一般用from A.b import c比import A.b.c 更方便 且不會冒混淆的危險.
總結
以上是生活随笔為你收集整理的python三种导入模块的方法和区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python selenium 三种等待
- 下一篇: 全面理解python中self的用法