今天就跟大家聊聊有關(guān)Python怎么模塊導(dǎo)入,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
三沙ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話(huà)聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!
淺談python模塊的導(dǎo)入操作
1.什么是模塊
在Python中有一個(gè)概念叫做模塊(module)。所謂模塊,就是將代碼量較大的程序分割成多個(gè)有組織的,彼此獨(dú)立但雙能互相交互的代碼片段,這些自我包含的有組織的代碼段就是模塊。
2.模塊的特點(diǎn)
python中的模塊有以下特點(diǎn):
(1)python中,一切皆對(duì)象,模塊也是對(duì)象
(2)模塊在物理形式上表現(xiàn)為以.py結(jié)尾的代碼文件。
(3)一個(gè)模塊也可以被看作是一個(gè)文件,一個(gè)文件也可以被當(dāng)作一個(gè)獨(dú)立的模塊被別的程序?qū)胝{(diào)用。
(4)模塊的文件名就是模塊的名字加上擴(kuò)展名.py
(5)每個(gè)模塊都有自己的名稱(chēng)空間
python允許"導(dǎo)入"其它的模塊以實(shí)現(xiàn)代碼重用,從而也實(shí)現(xiàn)了將獨(dú)立的代碼文件組織成更大的程序系統(tǒng)的作用。一個(gè)模塊在被導(dǎo)入后,在一個(gè)模塊的頂層定義的所有變量都在被導(dǎo)入時(shí)成為了被導(dǎo)入模塊的屬性。
python中的每一個(gè)模塊就是一個(gè)名稱(chēng)空。一個(gè)模塊的名稱(chēng)空間可以通過(guò)dict或dir(M)獲取,模塊屬性可以通過(guò)點(diǎn)號(hào)(.)運(yùn)算符獲取,格式為M.attr,并且每個(gè)模塊都是一個(gè)獨(dú)立的作用域(本地變量就是全局變量)。
3.python程序的組成
一個(gè)python程序通常包括一個(gè)頂層程序文件和其它的模塊文件:
頂層文件:包含了程序的主要控制流程。
模塊文件:為頂層文件或其它模塊提供各種功能性組件。
模塊首次導(dǎo)入(或重載)時(shí),python會(huì)立即執(zhí)行模塊文件的頂層程序代碼(也即不在函數(shù)內(nèi)的代碼),而位于函數(shù)主體內(nèi)的直到函數(shù)被調(diào)用后才會(huì)執(zhí)行。
4.模塊的執(zhí)行環(huán)境
模塊是被導(dǎo)入的,但模塊內(nèi)部也可以導(dǎo)入和使用其它模塊,這些模塊可以用python或其它編程語(yǔ)言寫(xiě)成。
模塊可內(nèi)含變量,函數(shù)以及類(lèi)來(lái)進(jìn)行工作,而函數(shù)和類(lèi)可以包含變量和其它元素。
5.模塊的導(dǎo)入
在導(dǎo)入模塊時(shí)只能使用模塊名,而不能使用帶.py后綴的模塊文件名。
在python解釋器下,輸入:
help("modules")
命令可以列出系統(tǒng)上已經(jīng)安裝的所有的模塊
>>> help("modules") Please wait a moment while I gather a list of all available modules... CDROM atexit importlib select DLFCN attr incremental selectors IN audioop inspect setuptools IPython automat io shelve TYPES autoreload ipaddress shlex __future__ base64 ipython_genutils shutil _ast bdb itertools signal _bisect binascii jedi simplegeneric _bootlocale binhex json site _bz2 bisect keyword six _codecs builtins lib2to3 smtpd _codecs_cn bz2 linecache smtplib _codecs_hk cProfile locale sndhdr _codecs_iso2022 calendar logging socket _codecs_jp cgi lzma socketserver _codecs_kr cgitb macpath spwd _codecs_tw chunk macurl2path sqlite3 _collections class mailbox sre_compile _collections_abc cmath mailcap sre_constants _compat_pickle cmd marshal sre_parse _compression code math ssl _crypt codecs mimetypes stat _csv codeop mmap statistics _ctypes collections modulefinder storemagic _curses colorsys multiprocessing string _curses_panel compileall netrc stringprep _datetime concurrent nis struct _dbm configparser nntplib subprocess _decimal constantly ntpath sunau _dummy_thread contextlib nturl2path symbol _elementtree copy numbers sympyprinting _functools copyreg numpy symtable _gdbm crypt opcode sys _hashlib csv operator sysconfig _heapq ctypes optparse syslog _imp curses os tabnanny _io cythonmagic ossaudiodev tarfile _json datetime packaging telnetlib _locale dbm parser tempfile _lsprof decimal pathlib termios _lzma decorator pdb test _markupbase difflib pexpect tests _multibytecodec dis pickle textwrap _multiprocessing distutils pickleshare this _opcode django pickletools threading _operator doctest pip time _osx_support dummy_threading pipes timeit _pickle easy_install pkg_resources token _posixsubprocess else_exp pkgutil tokenize _pydecimal email platform tornado _pyio encodings plistlib trace _random ensurepip poplib traceback _signal enum posix tracemalloc _sitebuiltins errno posixpath traitlets _socket exampleproj pprint tty _sqlite3 faulthandler profile twisted _sre fcntl prompt_toolkit types _ssl filecmp pstats typing _stat fileinput psutil unicodedata _string fnmatch pty unittest _strptime formatter ptyprocess urllib _struct fractions pwd uu _symtable ftplib py_compile uuid _sysconfigdata functools pyclbr venv _testmultiphase gc pydoc virtualenv _thread genericpath pydoc_data virtualenv_support _threading_local getopt pyexpat warnings _tracemalloc getpass pygments wave _warnings gettext pyparsing wcwidth _weakref glob pytz weakref _weakrefset grp queue webbrowser abc gzip quopri wsgiref aifc hashlib random xdrlib antigravity heapq re xml appdirs hmac readline xmlrpc argparse html reprlib xxlimited array http resource xxsubtype ast idlelib rlcompleter zipapp asynchat imaplib rmagic zipfile asyncio imghdr runpy zipimport asyncore imp sched zlib
使用import語(yǔ)句可以導(dǎo)入一個(gè)或多個(gè)指定的模塊,但是建議一個(gè)import語(yǔ)句只導(dǎo)入一個(gè)模塊
語(yǔ)法:
import module1[,module2[,....moduleN]]
如果被導(dǎo)入的模塊名字太長(zhǎng)時(shí),可以為被導(dǎo)入的模塊設(shè)定一個(gè)別名,但是要注意所起的別名不要與系統(tǒng)或者是自己設(shè)定的變量重名
語(yǔ)法:
import module as module_alias
使用from-import語(yǔ)句只導(dǎo)入指定模塊的部分屬性至當(dāng)前名稱(chēng)空間
語(yǔ)法:
from module import name1[,name2[,....nameN]]
import語(yǔ)句和from-import語(yǔ)句的不同點(diǎn):
1.import和from-import都是賦值語(yǔ)句,
import和from是可執(zhí)行語(yǔ)句,類(lèi)似于def,因此可以嵌套在if測(cè)試中,出現(xiàn)于def中等等,python執(zhí)行到這些語(yǔ)句時(shí)才會(huì)對(duì)其進(jìn)行解析,這樣所有來(lái)自模塊的屬性?xún)H在import語(yǔ)句執(zhí)行后才能使用
2.import和from都是隱性賦值語(yǔ)句
import將整個(gè)模塊對(duì)象賦值給一個(gè)變量名
from將一個(gè)或多個(gè)變量名賦值給導(dǎo)入此模塊的模塊中的同名對(duì)象
6.import的工作機(jī)制
import語(yǔ)句導(dǎo)入指定的模塊時(shí)會(huì)執(zhí)行三個(gè)步驟:
1.在指定路徑下搜索模塊文件,找到模塊文件。
2.指定的模塊在被導(dǎo)入時(shí)就會(huì)被編譯成字節(jié)碼,即編譯成.pyc文件。
3.依靠模塊的代碼中的定義來(lái)創(chuàng)建其所定義的對(duì)象,模塊文件中的所的語(yǔ)句會(huì)依次執(zhí)行,從頭至尾,而此步驟中任何對(duì)變量名的賦值運(yùn)算,都會(huì)產(chǎn)生所得到的模塊文件的屬性。
但是請(qǐng)注意:模塊只在第一次導(dǎo)入時(shí)才會(huì)執(zhí)行如上步驟,后續(xù)的導(dǎo)入操作只不過(guò)是提取內(nèi)存中已加載的模塊對(duì)象可以使用reload()命令重新加載指定的模塊。
7.模塊搜索
python解釋器在import模塊時(shí)查找模塊的順序:
1.程序的主目錄,
2.python的PATH目錄(如果設(shè)置了此變量)
可以使用以下命令查看python的PATH目錄:
>>> import sys >>> sys.path
3.標(biāo)準(zhǔn)鏈接庫(kù)目錄,就是python安裝目錄下的lib文件夾這個(gè)目錄
4.任何.pth文件的內(nèi)容(如果存在.pth文件)
這四個(gè)組件組合起來(lái)即為sys.path所包含的路徑,而python會(huì)選擇在搜索路徑中的第一個(gè)符合導(dǎo)入文件名的文件。
看完上述內(nèi)容,你們對(duì)Python怎么模塊導(dǎo)入有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。