Python 模块

包的概念
    1.包是一种管理 Python 模块命名空间的形式,采用"点模块名称"
    2.在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录
    3.目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包
    4.包是一个有层次的文件目录结构,它定义了由n个模块和n个子包
    5.用户可以每次只导入一个包里面的特定模块
    6.包的导入和模块导入差不多
    7.导入包时,直接执行init方法
    8.导入包时如果只写包名,默认不会导入所有模块,应在init模块中再次导入需要的模块或以from...import...的形式导入

模块和包补充
    1.库是完成一定功能的代码集合,具体表现可以是包,也可以是一个模块
    2.框架是解决一个开放性问题而设计的具有一定约束性的支撑结构
    3.包和模块一般存在lib文件夹中
    4.从包中导入单个或多个模块,或从模块中导入一些模块中的资源
    不能从包中导入模块的资源,不能从大包中导入小包的模块
    要保证面向原则,即只能导入自己的下一级

 

模块的创建
    Python创建自己的模块很方便,所有的.py文件都被视为是一个模块
    我们可以用import 文件名的方式把它导入自己的新文件
    不过我们要注意创建的模块要符合命名规范,比如首字母不能是数字等
    如果首字母是数字就会出现语法错误
    引用的时候不用加扩展名.py
    下面我们通过实例来演示一下
    a1.py
    #coding=utf-8
    def print_name():
        print('黑锅~~~~不要的')

    b.py
    #coding=utf-8
    import a1
    a1.print_name()

导入模块分类
    1.import
    2.from ...import

import
    a.py
    #coding=utf-8
    def jia(a,b):
        print(a+b)
    b.py
    #coding=utf-8
    import a
    #打印20+30
    a.jia(20+30)


from ...import ...
    a.py
    #coding=utf-8
    def jia(a,b):
        print(a+b)
    b.py
    #coding=utf-8
    from a import jia
    #打印20+30
    jia(20+30)

 

模块重载
如果真的想要python在同一次会话中再次运行文件(不停止和重新启动会话),需要调用imp标准库模块中可用的reload函数(这个函数也是一个python2.6内置函数,但在python3.0中不是内置的)。

模块重载实例
python3.0中的示例:
>>> from imp import reload  
>>> reload(script1)  
reload函数载入并运行了文件最新版本的代码,如果已经在另一个窗口中修改并保存了它,那将反映出修改变化。 reload函数希望获得的参数是一个已经加载了的模块对象的名称,所以如果在重载之前,请确保已经成功地导入了 这个模块。值得注意的是,reload函数在模块对象的名称前还需要括号,import则不需要。reload是一个被调用的 函数,而import是一个语句。

注意:python3.0把reload内置函数移到了imp标准库模块中。它仍然像以前一样重载文件,但是,必须导入它才能使用。

posted @ 2018-12-21 19:01  SilentKiller  阅读(137)  评论(0)    收藏  举报