模块:
1、模块文件和目录(包含__init__.py)
2、 运行模块时模块的__name__==__main__、
3、导入模块,
import 模块名
导入的模块使用独立的命名空间,导入的模快和本文件在一个命名空间内。即导入的模块放在一个独立的命名空间内,该命名空间在文件的命名空间中。使用导入模块中的东西,需要用模块名.函数名。
from 模块命 import 函数or属性or类
导入的模快和本文件在一个命名空间内,即模块中的东西导入到文件中,使用时:函数名 。
导入时,如果导入的模块能执行,会执行模块中的代码。
导入的模块的东西,不仅仅包含是方法、类,还包含该模块导入的东西(文件头),相当于把命名空间导入到文件中了。
命名空间和文件的关系:
命名空间中的东西,就是文件中的东西,包含文件头。
4、搜索模块的路径,在sys.path()中
5、一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。除非手动reload(hello)
模块:
概念:一个py文件就是一个模块
目的:
可以重复使用
解决避免函数名和变量名冲突。
使用方式:
举个例子,一个abc.py的文件就是一个名字叫abc的模块
包:
目的:解决模块名冲突
表现形式:
目录下有__init__.py的文件的目录
引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。
有了包以后,模块名=包名.模块名 如 adc模块的名字就变成了mycompany.abc
请注意,每个包目录下面都会有一个__init__.py的文件,这个文件必须存在,如果不存在,python就把这个目录当成一个普通目录,而不是一个包。
__init__.py本身就是一个模块,它的模块名字就是目录名字
if __name__='__main__':
test()
__name__,在运行模块时,python会把模块名字__name__变成__main__,以上该语句目的在运行模块时,运行一些函数
但是在其他地方导入模块时,if判断将失败,不会执行函数
安装第三方模块
--->在Python中,安装第三方模块,是通过setuptools这个工具完成的。Python有两个封装了setuptools的包管理工具:easy_install和pip。目前官方推荐使用pip
--->怎么使用第三方模块:
安装和导入
--->模糊路径搜索:
在Python中,安装第三方模块,是通过setuptools这个工具完成的。Python有两个封装了setuptools的包管理工具:easy_install和pip。目前官方推荐使用pip。
现在,让我们来安装一个第三方库——Python Imaging Library,这是Python下非常强大的处理图像的工具库。一般来说,第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索,比如Python Imaging Library的名称叫PIL,因此,安装Python Imaging Library的命令就是:
pip install PIL
耐心等待下载并安装后,就可以使用PIL了。
导入模块时:
搜索路径:默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中:
>>> import sys
>>> sys.path
['', '/Library/Python/2.7/site-packages/pycrypto-2.6.1-py2.7-macosx-10.9-intel.egg', '/Library/Python/2.7/site-packages/PIL-1.1.7-py2.7-macosx-10.9-intel.egg', ...]
如果我们要添加自己的搜索目录,有两种方法:
一是直接修改sys.path,添加要搜索的目录:
>>> import sys
>>> sys.path.append('/Users/michael/my_py_scripts')
这种方法是在运行时修改,运行结束后失效。
第二种方法是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。
注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。
使用__future__
作用:Python提供了__future__模块,把下一个新版本的特性导入到当前版本,于是我们就可以在当前版本中测试一些新版本的特性。
Python为了确保你能顺利过渡到新版本,特别提供了__future__模块,让你在旧的版本中试验新版本的一些特性。