初覽Python模塊文件

2018-08-26 16:55 更新

什么是模塊?

每一個(gè).py文件都是一個(gè)模塊,其他文件可以通過導(dǎo)入一個(gè)模塊讀取這個(gè)模塊的內(nèi)容,相當(dāng)于C中的include……一個(gè)大型程序往往呈現(xiàn)出多模塊的形式。其中一個(gè)模塊文件被設(shè)計(jì)為主文件(or頂層文件)。



模塊的導(dǎo)入:



這里我們做一個(gè)最簡(jiǎn)單的example,更為詳細(xì)的后面講。這里把剛才寫的script1放在我們安裝Python的位置:

然后開始-運(yùn)行-python:




10. import,from 和 reload
  • 模塊只可以導(dǎo)入一次
導(dǎo)入是一個(gè)開銷很大的操作,以至于每個(gè)程序運(yùn)行只可以導(dǎo)入一次。想再次運(yùn)行除非調(diào)用內(nèi)置reload函數(shù):


import和reload不同的是,import不需要括號(hào),是一個(gè)語(yǔ)句,而reload是一個(gè)函數(shù),其返回值是一個(gè)python模塊對(duì)象。
  • 模塊扮演了工具庫(kù)的角色:模塊往往是變量名的封裝,可被視作命名空間;在一個(gè)包中的變量名就是屬性,或者說,屬性就是綁定在特定對(duì)象上的變量名。一個(gè)模塊通??梢杂袃蓚€(gè)兩個(gè)Python語(yǔ)句讀入:import 和 from,以及reload函數(shù)的使用
  • import語(yǔ)句將模塊作為一個(gè)整體引用,相當(dāng)于引入一個(gè)類的object??聪旅娴男Ч兔靼琢?。myfile作為一個(gè)模塊被引用,然后script1就可以使用myfile的屬性了。
  • 另一種引用方法:


圖中所示,from和import很相似,只不過后者增加了對(duì)變量名的額外賦值,也就是拷貝模塊的屬性,因此能夠以title導(dǎo)入,而不是myfile這個(gè)對(duì)象。



  • 模塊的知識(shí)我們將在后面的章節(jié)具體的講,這里再給出一個(gè)import的例子。有朋友提出疑問,為什么import不是像C++中#include一樣后續(xù)可以調(diào)用這個(gè)這個(gè)模塊的方法和屬性,而是直接執(zhí)行了呢?這里給出一個(gè)解釋,并不是不可以調(diào)用這個(gè)模塊的方法,而是上面的例子給出的比較簡(jiǎn)單,沒有涉及類的封裝,只有幾個(gè)執(zhí)行語(yǔ)句。下面在給出的這個(gè)例子是一個(gè)簡(jiǎn)單的模塊例子。該例中,Worker.py定義了Worker類,外部通過import Worker導(dǎo)入該模塊,進(jìn)行相關(guān)操作。


  • import&from總結(jié)版:



dir(myfile)是獲得myfile中的所有attribute,其中,前面帶下劃線的是Python預(yù)定義的內(nèi)置變量名


模塊的其他概念:

  • 模塊是Python程序最大的程序結(jié)構(gòu)
  • 每個(gè)模塊文件是一個(gè)獨(dú)立完備的變量包裝,即一個(gè)命名空間
  • execfile('myfile.py')是另一種程序執(zhí)行方式,但是從本質(zhì)上講他并沒有導(dǎo)入模塊

常用Python模塊

  • difflib python diff比較模塊
  • datetime python 處理日期與時(shí)間的模塊
  • chardet 字符串/文件 編碼檢測(cè)(很好用)
adodb:我們領(lǐng)導(dǎo)推薦的數(shù)據(jù)庫(kù)連接組件
bsddb3:BerkeleyDB的連接組件
Cheetah-1.0:我比較喜歡這個(gè)版本的cheetah
cherrypy:一個(gè)WEB framework
ctypes:用來調(diào)用動(dòng)態(tài)鏈接庫(kù)
DBUtils:數(shù)據(jù)庫(kù)連接池
django:一個(gè)WEB framework
docutils:用來寫文檔的
dpkt:數(shù)據(jù)包的解包和組包
MySQLdb:連接MySQL數(shù)據(jù)庫(kù)的
py2exe:用來生成windows可執(zhí)行文件
Pylons:我們領(lǐng)導(dǎo)推薦的web framework
pysqlite2:SQLite的連接組件
pythonwin:Python的Windows擴(kuò)展
setuptools:無(wú)奈,PEAK的一套python包管理機(jī)制
sqlalchemy:數(shù)據(jù)庫(kù)連接池
SQLObject:數(shù)據(jù)庫(kù)連接池
twisted:巨無(wú)霸的網(wǎng)絡(luò)編程框架
wxPython-2.6:因?yàn)樾枰3峙clinux相同的版本才沒用最新的,GUI編程框架
pypcap:抓包的
python-dnet:控制網(wǎng)絡(luò)安全的其他設(shè)備
pyevent:Python的事件支持
pydot:畫圖的,graphiz
sendpkt:Python發(fā)包
simplejson:JSON的支持


DPKT:raw-scoket網(wǎng)絡(luò)編程
Cx-oracle:連接oracle的好東東
Mechanize:爬蟲連接網(wǎng)站常用
PIL:圖像處理工具包


reportlab for PDF 文件。
PyQt4 for GUI界面

feedparser: rss解析
chardet:編碼檢測(cè)
scons: 項(xiàng)目構(gòu)建工具,寫好了模板用起來還是很方便的
scapy: 網(wǎng)絡(luò)包構(gòu)建分析框架,可編程的wireshark,有興趣的google “Silver Needle in the Skype”
pefile: windows pe文件解析器
winpdb: 自己的程序或者用別的庫(kù)不太明白的時(shí)候就靠它了
pywmi: 省了好多折騰功夫
pylint: 培養(yǎng)良好的編碼習(xí)慣


下面是準(zhǔn)備用的,不做評(píng)論:

pygccxml
pyparsing
pymacs
idapython
paimei
pysvn
pyLucene
wikidpad


1.Python操作PDF文件
2.Python連接PostgreSQL引擎
3.Python的.NET2.0的曲線表

http://pybrary.net/
—————————————————–
1.Python Image Libary
2.Tkinter Libary

http://www.pythonware.com/index.htm
—————————————————–
1.Karrigell

http://karrigell.sourceforge.net/
—————————————————–
1.The Standard Python Libary

http://effbot.org/librarybook/
—————————————————–
1.Python操作PDF的Libary

http://reportlab.org/
—————————————————–
1.Python cURL Libary

http://pycurl.sourceforge.net/
—————————————————–
1.urlgrabber

http://linux.duke.edu/projects/urlgrabber/
—————————————————–
1.MySQL-Python

http://mysql-python.sourceforge.net/
—————————————————–
1.pyScripter
2.Python for Delphi

http://mmm-experts.com/Products.aspx
—————————————————–
1.Python Cookbook

http://aspn.activestate.com/ASPN/Python/Cookbook/
—————————————————–
1.pygame

http://www.pygame.org/news.html
——————————————————
1.pymedia

http://www.pymedia.org

——————————————————
1.pydbf

http://dbfpy.sourceforge.net/
——————————————————
1.Pexpect

http://pexpect.sourceforge.net/
——————————————————
1.dabo
desktop application frameworks

http://dabodev.com/
——————————————————
1.pySerial

http://pyserial.sourceforge.net/
http://wiki.woodpecker.org.cn/moin/PySerial
——————————————————
1.python’s doc

http://wiki.woodpecker.org.cn/moin/PythonZhDoc
——————————————————
1.The Visual Module of VPython(3D)

http://vpython.org/index.html
——————————————————
1.PyLucene

http://pylucene.osafoundation.org/
——————————————————
1.DBUils

http://www.webwareforpython.org/DBUtils
——————————————————
1.http://happyiww.popo.blog.163.com/blog/

a good people’s blog
——————————————————
1.AppleScript,OSAComponents,HtmlCalendar

http://freespace.virgin.net/hamish.sanderson/index.html
——————————————————
1.Pypcap

http://code.google.com/p/pypcap/
http://monkey.org/~dugsong/dpkt/
http://www.winpcap.org/install/default.htm


python-memcached client module for memcached


Kodos,python的正則表達(dá)式調(diào)試工具,



PLY (Python Lex-Yacc)
http://www.dabeaz.com/ply/
正在用它寫匯編器.

wxPython - GUI Framework
omniORBpy - CORBA Library
ZODB3 - an OODB implement
ReportLab - PDF generating solution
numpy+scipy+matplotlib


hachoir 各種多媒體元數(shù)據(jù)解析
python-orge 演示用

數(shù)據(jù)庫(kù)的:
sqlalchemy
sqlobject
MySQL-python (easy_install的時(shí)候就是這個(gè)名字)


routes
beaker

兩個(gè)模板引擎:
genshi
mako

paster


另外還有知道的
PyCrypto 加密的
paramiko 這個(gè)可以幫你寫sftp,比twisted里面的那個(gè)好用一些

twisted 寫服務(wù)器玩的

PyOpenGL

PyGame

Psyco 傳說可以加速你的python程序

PIL (Python Image Library) 處理圖片

PyObjC 這個(gè)是蘋果上用的,寫Cocoa程序


Python desktop client GUI application:
wxPython
PyOpenGL
PyXML
ZSI
davlib.py

ChartDirector
一個(gè)支持多種語(yǔ)言的圖表庫(kù),無(wú)論是效果還是效率,都比jfreechart高。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)