模块是包含函数和其他语句的python脚本文件,它以 .py 为后缀名。在python中可以通过导入模块,然后使用模块中提供的函数或者数据。
1、导入模块:
import 模块名
import 模块名 as 新名字
from 模块名 import 函数名
- >>> import string #只指明模块的导入方法
- >>> string.capitalize('use modules')
- 'Use modules'
- >>> capitalize('use modules') #错误的调用方法
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- NameError: name 'capitalize' is not defined
- >>> from math import sqrt #指明函数的导入方法
- >>> sqrt(9)
- 3.0
- >>> math.sqrt(9) #错误的方法
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- NameError: name 'math' is not defined
- >>>
显然在指明函数的导入方法中,在使用方法时可以不用指明模块名,所以要更方便一些,于是可以将模块的所有函数同时导入。
- >>> from string import *
- >>> split('user modules')
- ['user', 'modules']
- >>> capitalize('use modules')
- 'Use modules'
- >>>
2)模块的查找路径
python 解释器首先在当前目录中查找导入的模块。如果未找到模块,python解释器会从sys模块中的path变量指定的目录查找导入模块。
在脚本中可以向sys.path添加模块查找路径。下面将当前目录下的module子目录添加到sys.path中。
- >>> import os
- >>> os.getcwd()
- 'C://Documents and Settings//asus'
- >>> import sys
- >>> modulepath = os.getcwd() + '//module'
- >>> sys.path.append(modulepath)
- >>> print sys.path
- ['', 'C://WINDOWS//system32//python26.zip', 'C://Python26//DLLs', 'C://Python26/
- /lib', 'C://Python26//lib//plat-win', 'C://Python26//lib//lib-tk', 'C://Python26
- ', 'C://Python26//lib//site-packages', 'C://Documents and Settings//asus//module
- ']
- >>>
3)模块编译
对于模块而言, python 总是在第一次调用后将其编译成字节码的形式的pyc文件,以提高脚本的启动速度。
对于不作为模块的脚本而言,python不会在运行脚本后将其编译成字节码的形式。如果想将其编译的话,可以用如下方式:
#file:complie.py
#
import py_compile #导入py_complile模块
py_compile.compile('usemodule.py') #编译usemodule.py
4)模块运行——__name__ 属性 (在name前后均是两条下划线)
当脚本是独立运行时,__name__属性的值是 __main__ ,当作为模块被导入时,__name__属性的值是模块名