首页 > 代码库 > 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模块和包详解