python中、模块、包初识

 

  模块:逻辑上组织python代码(变量、函数、类、逻辑:实现功能),以.py为结尾的python文件。(test.py 文件,对应的模块名:test)

  包:用来从逻辑上组织模块的,本质就是一个目录(带有__init__.py的文件)。

 

  导入方法:

    import test

    from test import *

    from test import name,age

    from test import name as name_test   //从test中导入name变量后,变量名更改为name_test (防止当前模块中也有''name''变量

  

  import:(路径搜索和搜索路径)

    导入模块就是把被导入的模块(python文件)解释一遍.

    导入包就是把被导入包中的__init__.py 解释一遍.

  在我们导入 文件/包 的时候,我们所搜索的路径都是在当前文件(相同/同级)下中导入的,如果被导入的文件没有和当前文件是(相同/同级)目录下,单纯的impot是导入不成功的。

  这里就要用到os.sys.path这个方法

>>> import os
>>> os.sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip',
 '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', 
 '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', 
 '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', 
 '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']

  这里os.sys.path 就是环境变量,如果说想要import 模块/包,那都是从这个list中的路径中查找 模块/包 的,所以想要import不是同级目录中的文件,可以把这个程序的目录添加到环境变量中,然后再进行import就可以了 找到所要import文件的目录,加到环境变量中。

abs_path = os.path.abspath(__file__) #当前文件的绝对路径
base_path =os.path.dirname(abs_path)  #当前目录的父级目录
os.sys.path.insert(0,base_path) 
#将目标文件的目录添加到环境变量中,因为路径搜索是从list第一个元素进行搜索,所以把目录添加到第一位是为了能够更快的查找,也防止在其他目录下有与目标文件重名的文件.了能够更快的查找,也防止在其他目录下有与目标文件重名的文件.

 

posted @ 2017-05-29 19:57  LeeeetMe  阅读(210)  评论(0编辑  收藏  举报