模块

模块:
  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__模块,让你在旧的版本中试验新版本的一些特性。

原文地址:https://www.cnblogs.com/xuanjian-91/p/8288987.html