新聞中心
淺談python模塊的導(dǎo)入操作

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站建設(shè)、平?jīng)鼍W(wǎng)絡(luò)推廣、微信小程序、平?jīng)鼍W(wǎng)絡(luò)營銷、平?jīng)銎髽I(yè)策劃、平?jīng)銎放乒P(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供平?jīng)鼋ㄕ?/a>搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
1.什么是模塊
在Python中有一個概念叫做模塊(module)。所謂模塊,就是將代碼量較大的程序分割成多個有組織的,彼此獨立但雙能互相交互的代碼片段,這些自我包含的有組織的代碼段就是模塊。
2.模塊的特點
python中的模塊有以下特點:
(1)python中,一切皆對象,模塊也是對象
(2)模塊在物理形式上表現(xiàn)為以.py結(jié)尾的代碼文件。
(3)一個模塊也可以被看作是一個文件,一個文件也可以被當(dāng)作一個獨立的模塊被別的程序?qū)胝{(diào)用。
(4)模塊的文件名就是模塊的名字加上擴(kuò)展名.py
(5)每個模塊都有自己的名稱空間
python允許"導(dǎo)入"其它的模塊以實現(xiàn)代碼重用,從而也實現(xiàn)了將獨立的代碼文件組織成更大的程序系統(tǒng)的作用。一個模塊在被導(dǎo)入后,在一個模塊的頂層定義的所有變量都在被導(dǎo)入時成為了被導(dǎo)入模塊的屬性。
python中的每一個模塊就是一個名稱空。一個模塊的名稱空間可以通過dict或dir(M)獲取,模塊屬性可以通過點號(.)運算符獲取,格式為M.attr,并且每個模塊都是一個獨立的作用域(本地變量就是全局變量)。
3.python程序的組成
一個python程序通常包括一個頂層程序文件和其它的模塊文件:
頂層文件:包含了程序的主要控制流程。
模塊文件:為頂層文件或其它模塊提供各種功能性組件。
模塊首次導(dǎo)入(或重載)時,python會立即執(zhí)行模塊文件的頂層程序代碼(也即不在函數(shù)內(nèi)的代碼),而位于函數(shù)主體內(nèi)的直到函數(shù)被調(diào)用后才會執(zhí)行。
4.模塊的執(zhí)行環(huán)境
模塊是被導(dǎo)入的,但模塊內(nèi)部也可以導(dǎo)入和使用其它模塊,這些模塊可以用python或其它編程語言寫成。
模塊可內(nèi)含變量,函數(shù)以及類來進(jìn)行工作,而函數(shù)和類可以包含變量和其它元素。
5.模塊的導(dǎo)入
在導(dǎo)入模塊時只能使用模塊名,而不能使用帶.py后綴的模塊文件名。
相關(guān)推薦:《Python視頻教程》
在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語句可以導(dǎo)入一個或多個指定的模塊,但是建議一個import語句只導(dǎo)入一個模塊
語法:
import module1[,module2[,....moduleN]]
如果被導(dǎo)入的模塊名字太長時,可以為被導(dǎo)入的模塊設(shè)定一個別名,但是要注意所起的別名不要與系統(tǒng)或者是自己設(shè)定的變量重名
語法:
import module as module_alias
使用from-import語句只導(dǎo)入指定模塊的部分屬性至當(dāng)前名稱空間
語法:
from module import name1[,name2[,....nameN]]
import語句和from-import語句的不同點:
1.import和from-import都是賦值語句,
import和from是可執(zhí)行語句,類似于def,因此可以嵌套在if測試中,出現(xiàn)于def中等等,python執(zhí)行到這些語句時才會對其進(jìn)行解析,這樣所有來自模塊的屬性僅在import語句執(zhí)行后才能使用
2.import和from都是隱性賦值語句
import將整個模塊對象賦值給一個變量名
from將一個或多個變量名賦值給導(dǎo)入此模塊的模塊中的同名對象
6.import的工作機(jī)制
import語句導(dǎo)入指定的模塊時會執(zhí)行三個步驟:
1.在指定路徑下搜索模塊文件,找到模塊文件。
2.指定的模塊在被導(dǎo)入時就會被編譯成字節(jié)碼,即編譯成.pyc文件。
3.依靠模塊的代碼中的定義來創(chuàng)建其所定義的對象,模塊文件中的所的語句會依次執(zhí)行,從頭至尾,而此步驟中任何對變量名的賦值運算,都會產(chǎn)生所得到的模塊文件的屬性。
但是請注意:模塊只在第一次導(dǎo)入時才會執(zhí)行如上步驟,后續(xù)的導(dǎo)入操作只不過是提取內(nèi)存中已加載的模塊對象可以使用reload()命令重新加載指定的模塊。
7.模塊搜索
python解釋器在import模塊時查找模塊的順序:
1.程序的主目錄,
2.python的PATH目錄(如果設(shè)置了此變量)
可以使用以下命令查看python的PATH目錄:
>>> import sys >>> sys.path
3.標(biāo)準(zhǔn)鏈接庫目錄,就是python安裝目錄下的lib文件夾這個目錄
4.任何.pth文件的內(nèi)容(如果存在.pth文件)
這四個組件組合起來即為sys.path所包含的路徑,而python會選擇在搜索路徑中的第一個符合導(dǎo)入文件名的文件。
分享文章:創(chuàng)新互聯(lián)Python教程:Python模塊導(dǎo)入的相關(guān)介紹
文章起源:http://m.fisionsoft.com.cn/article/cojjjic.html


咨詢
建站咨詢
