模块、包

来源:互联网 发布:usb端口检测软件 编辑:程序博客网 时间:2024/04/26 04:41

python脚本都是以扩展名py文本文件保存的,一个文件可以单独运行,也可以导入另外一个文件运行。每个文件都是一个模块,并且文件导入其他模块之后就可以使用导入模块定义的变量名。

一、模块的导入

1、

import module

2、

from module import 函数名1,函数名2....

3、

from module import name1 as name2

二、模块的搜索路径

当一个python导入一个模块module1时候,python解释器寻找module1.py文件的顺序为:

  1. 先在当前目录下寻找module1.py的文件
  2. 然后再从环境变量PYTHONPATH寻找
  3. 如果这环境变量没有设定,解释器还会在安装预先设定的的一些目录寻找(sys.path)
>>> import sys>>> print sys.path['', '/usr/local/lib/python2.7/dist-packages/MySQL_python-1.2.4-py2.7-linux-x86_64.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/usr/lib/python2.7/dist-packages/ubuntuone-client', '/usr/lib/python2.7/dist-packages/ubuntuone-control-panel', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-installer', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']`

如果将module1.py不放在当前目录,而随便放在一个目录下。这里你就需要通过某种途径,如sys.path.append(‘路径名’),来告知Python了。
注:sys.path返回的是模块搜索列表,那么就是使用list的append()或insert()增加新的目录。

三、包

创建了多个模块后,我们可能希望将某些功能相近的文件放在同一文件夹下,这里就需要运用包的概念了。包对应于文件夹,使用包的方式跟模块也类似,唯一需要注意的是,当文件夹当作包使用时,文件夹需要包含_init_.py文件,主要是为了避免将文件夹名当作普通的字符串。_init_.py的内容可以为空,一般用来进行包的某些初始化工作或者设置_all_值,_all_是在from package-name import *这语句使用的,全部导出定义过的模块。

import package.module

这里package就是一个目录,module是模块,即package目录下的一个module.py的文件。

0 0