Python Essential Reference 4th – 第8章 – 读书笔记

1、Python程序可以通过模块(modules)和包(package)来组织,简单来说,模块就是xx.py文件,而包就是一组这种文件组成的文件夹(含子文件夹)

2、如1中所属,每一个.py文件都可以看做是一个模块,通过import来引用。

3、import时会执行模块中的所有语句,包括你可能的一些测试语句。当然他们只会被执行一遍(不管被import了多少次)

4、import仅仅是表示当前程序知道了那个模块的命名空间,使用的时候,必须带上模块,比如上面的例子:
obj = spam.Spam()

5、可以通过逗号,来引用多个模块:

11、from xxx import xxx也是可以用as的!

12、from xxxModules import *,可以使用*。这个*并不是全部,而是需要到xxxModules.py里面查找__all__定义。
因此是可以隐藏的,例如下面:

13、如果模块中使用了global命名空间,则只以定义模块的文件为依据,而非调用的模块!

14、如何以“main”类似的方式启动模块。
如果运行代码(非函数什么的)直接写在模块尾部,则import时候会被全执行,因此可以用下面的方法:

只有单独执行python xxx.py的时候,才会进入”Hi I’m main”这里

15、模块的搜索。
路径在sys.path下,按顺序来,也可以动态添加!

python会识别的拓展名为:.py .pyw .pyc .pyo以及动态连库

16、如果是动态连库.pyd,则会同时载入**.so(或者dll)

17、.py在第一次被import的时候,会被变异为字节码.pyc,优化后的未.pyo。

18、python搜索模块时候是大小写敏感的!

19、关于重载入:Python现在的版本中已经无法实现!所以不要尝试动态冲载入(更新.py后想载入新版本的)

20、包Package,每个包的下面要包含__init__.py。包的子目录下面也要有__init__.py。
类似的,也是from xxx improt *的时候,会检查__init__.py的__all__变量。有的才会被import

21、发布python程序。
首先放在一个目录下,加入README等,然后加入如下的setup.py:

python setup.py sdist #自动打包生成一个zip。
python setup.py install #安装到本地(通常是用户下载会zip包后解压缩后执行)
python setup.py bdist #生成一个二进制版本(都编译成pyc了)
其他可转化成可执行程序的工具:py2exe(windows), py2app(MAC OS),可怜的linux下还没有

22、也可以用setuptools,则setup.py修改为:

23、Python的包都可以从PyPI上下载。http://pypi.python.org
python setup.py install #安装
python setup.py install –user #安装到用户的目录下(home相关)
python setup.py install –prefix #安装到其他目录,一般需要修改sys.path。
很多插件都用了c/c++,则需要对应编译器。

24、使用easy_install可以从网上直接下载,然后安装。

25、附上setuptools(含easy_install)的安装方法:
Linux下:

Windows下,下载并安装:http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20

Leave a Reply

Your email address will not be published.