首页 > 代码库 > python - model&package模块和包详解

python - model&package模块和包详解

http://blog.csdn.net/pipisorry/article/details/43313197

模块和包

1 python程序由包(package)、模块(module)和函数组成。是由一系列模块组成的集合。模块是处理某一类问题的函数和类的集合。函数是一段可以重复多次调用的代码。

2 python的程序是由一个个模块组成的。模块把一组相关的函数或代码组织到一个文件中,一个文件即是一个模块。模块由代码、函数和类组成。每个模块文件是一个独立完备的命名空间,一个模块文件不能看到其他文件定义的变量名,除非它明确地导入了那个文件,模块文件起到了最小化命名冲突的作用。

3 导入模块使用import和from语句(都是隐性的赋值语句),以及reload函数。

4 包就是一个完成特定任务的工具箱,包的作用是实现程序的重用。包必须含有一个__init__.py文件,用于标识当前文件夹是一个包。根据功能把文件组织成子目录,包导入会让模块扮演的角色更为明显,也使代码更具有可读性。

5 可以导入模块名,还可以指定目录路径(Python代码的目录就称为包),包导入就是把计算机上的目录变成另一个Python命名空间,包的属性就是该目录包含的子目录和模块文件。

6 当多个同名程序文件安装在某机器上时,包导入可以偶尔用来解决导入的不确定性。导入包也使用import和from语句。


python中import包

1 from import语句

如果你想要直接输入argv变量到你的程序中(避免在每次使用它时打sys.),那么你可以使用from sys import argv语句。如果你想要输入所有sys模块使用的名字,那么你可以使用from sys import *语句。这对于所有模块都适用。

2 导入modules的两种方式import与from...import的不同之处

与import类似, 被导入的module仍然会执行且仅执行一次.

from *** import 的实质 (import 与 from *** import 的区别)

当以 "from *** import " 方式导入module时, python会在当前module 的命名空间中新建相应的命名.

即, "from t2 import var1" 相当于:

import t2

var1= t2.var1

在此过程中有一个隐含的赋值的过程

由于python赋值操作特性(参考python变量名本质),在当前代码中对"var1"的修改并不能影响到t2.py中"var1"的值. 同时, 在t2.py中对var1的修改也不能反映到当前的代码.

陷阱:使用from导入变量,而那些变量碰巧和作用域中现有的变量同名,本地变量就会被悄悄地覆盖掉;使用import则没这个问题。

3 import scipy中的模块注意的问题

Scipy - science python


模块的__name__


当一个模块被第一次输入import的时候,这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,这可以通过模块的__name__属性完成。

技术分享

每个Python模块都有它的__name__,如果它是‘__main__‘,这说明这个模块被用户单独运行,我们可以进行相应的恰当操作。



from:http://blog.csdn.net/pipisorry/article/details/43313197

ref:http://www.cnblogs.com/wei-li/archive/2012/03/25/2416291.html


python - model&package模块和包详解