codecamp

初览Python模块文件

什么是模块?

每一个.py文件都是一个模块,其他文件可以通过导入一个模块读取这个模块的内容,相当于C中的include……一个大型程序往往呈现出多模块的形式。其中一个模块文件被设计为主文件(or顶层文件)。



模块的导入:



这里我们做一个最简单的example,更为详细的后面讲。这里把刚才写的script1放在我们安装Python的位置:

然后开始-运行-python:




10. import,from 和 reload
  • 模块只可以导入一次
导入是一个开销很大的操作,以至于每个程序运行只可以导入一次。想再次运行除非调用内置reload函数:


import和reload不同的是,import不需要括号,是一个语句,而reload是一个函数,其返回值是一个python模块对象。
  • 模块扮演了工具库的角色:模块往往是变量名的封装,可被视作命名空间;在一个包中的变量名就是属性,或者说,属性就是绑定在特定对象上的变量名。一个模块通常可以有两个两个Python语句读入:import 和 from,以及reload函数的使用
  • import语句将模块作为一个整体引用,相当于引入一个类的object。看下面的效果就明白了。myfile作为一个模块被引用,然后script1就可以使用myfile的属性了。
  • 另一种引用方法:


图中所示,from和import很相似,只不过后者增加了对变量名的额外赋值,也就是拷贝模块的属性,因此能够以title导入,而不是myfile这个对象。



  • 模块的知识我们将在后面的章节具体的讲,这里再给出一个import的例子。有朋友提出疑问,为什么import不是像C++中#include一样后续可以调用这个这个模块的方法和属性,而是直接执行了呢?这里给出一个解释,并不是不可以调用这个模块的方法,而是上面的例子给出的比较简单,没有涉及类的封装,只有几个执行语句。下面在给出的这个例子是一个简单的模块例子。该例中,Worker.py定义了Worker类,外部通过import Worker导入该模块,进行相关操作。


  • import&from总结版:



dir(myfile)是获得myfile中的所有attribute,其中,前面带下划线的是Python预定义的内置变量名


模块的其他概念:

  • 模块是Python程序最大的程序结构
  • 每个模块文件是一个独立完备的变量包装,即一个命名空间
  • execfile('myfile.py')是另一种程序执行方式,但是从本质上讲他并没有导入模块

常用Python模块

  • difflib python diff比较模块
  • datetime python 处理日期与时间的模块
  • chardet 字符串/文件 编码检测(很好用)
adodb:我们领导推荐的数据库连接组件
bsddb3:BerkeleyDB的连接组件
Cheetah-1.0:我比较喜欢这个版本的cheetah
cherrypy:一个WEB framework
ctypes:用来调用动态链接库
DBUtils:数据库连接池
django:一个WEB framework
docutils:用来写文档的
dpkt:数据包的解包和组包
MySQLdb:连接MySQL数据库的
py2exe:用来生成windows可执行文件
Pylons:我们领导推荐的web framework
pysqlite2:SQLite的连接组件
pythonwin:Python的Windows扩展
setuptools:无奈,PEAK的一套python包管理机制
sqlalchemy:数据库连接池
SQLObject:数据库连接池
twisted:巨无霸的网络编程框架
wxPython-2.6:因为需要保持与linux相同的版本才没用最新的,GUI编程框架
pypcap:抓包的
python-dnet:控制网络安全的其他设备
pyevent:Python的事件支持
pydot:画图的,graphiz
sendpkt:Python发包
simplejson:JSON的支持


DPKT:raw-scoket网络编程
Cx-oracle:连接oracle的好东东
Mechanize:爬虫连接网站常用
PIL:图像处理工具包


reportlab for PDF 文件。
PyQt4 for GUI界面

feedparser: rss解析
chardet:编码检测
scons: 项目构建工具,写好了模板用起来还是很方便的
scapy: 网络包构建分析框架,可编程的wireshark,有兴趣的google “Silver Needle in the Skype”
pefile: windows pe文件解析器
winpdb: 自己的程序或者用别的库不太明白的时候就靠它了
pywmi: 省了好多折腾功夫
pylint: 培养良好的编码习惯


下面是准备用的,不做评论:

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的正则表达式调试工具,



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 各种多媒体元数据解析
python-orge 演示用

数据库的:
sqlalchemy
sqlobject
MySQL-python (easy_install的时候就是这个名字)


routes
beaker

两个模板引擎:
genshi
mako

paster


另外还有知道的
PyCrypto 加密的
paramiko 这个可以帮你写sftp,比twisted里面的那个好用一些

twisted 写服务器玩的

PyOpenGL

PyGame

Psyco 传说可以加速你的python程序

PIL (Python Image Library) 处理图片

PyObjC 这个是苹果上用的,写Cocoa程序


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

ChartDirector
一个支持多种语言的图表库,无论是效果还是效率,都比jfreechart高。
如何运行Python程序?
Python设置细节
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }