zoukankan      html  css  js  c++  java
  • 包的介绍

    1,什么是包?

      包是一种通过'.模块名'来组织python名称空间的方式

      通俗的开讲: 包就是一个具有__init__.py文件的文件夹,所以创建包的意义就是用一个文件将文件/模块组织起来

    强调:

      1),在python3中,即是包下没有__init__.py文件,import包仍然不会报错,而在python2中,包下一定要有__init__.py文件,否则import包就会报错

      2), 创建包的目的不是为了运行,而是被导入使用,包只是模块的一种形式,包的本质就是一种模块

    2, 为何要使用包?

      包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来. 随着功能越写越多,我们无法将所有功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性

    3,包的使用之 import

      单独导入包名称时不会导入包中所有包含的所有子模块

    #在与glance同级的test.py中
    import glance
    glance.cmd.manage.main()
    
    '''
    执行结果:
    AttributeError: module 'glance' has no attribute 'cmd'
    
    '''

    4, 包的使用之 from...import...

      需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误

    5, 想要从包中导入所有,如果按照模块内导入所有的方法实际上只会导入包下__init__.py文件中定义的名字,可以在文件中定义__all__

    6, 包以及包所包含的模块都是用来被导入的,而不是被直接执行的.而环境变量都是以执行文件为准的

    7, 绝对导入与相对导入总结

      绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入

        优点: 执行文件与被导入的模块中都可以使用

        缺点: 所有导入都是以sys.path为起始点,导入麻烦

      相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入

        符号:  . (一个点)代表当前所在文件的文件夹,  ..(两个点)代表上一级文件夹,  ...(三个点)代表上一级的上一级文件夹

        优点: 导入更加简单

        缺点: 只能在导入包中的模块时才能使用

      注意:  1),相对导入只能用于包内部模块之间的相互导入,导入者与被导入者都必须存在于一个包内

         2), 试图在顶级包之外使用相对导入是错误的,言外之意,必须在顶级包内使用相对导入,每增加一个,代表调到上一级文件夹,而上一级不应该超出定级包.

  • 相关阅读:
    修改MFC标题栏上的图标
    【转】子窗口刷新父窗口的问题
    水晶报表添加引用
    【转】MetadataType的使用,MVC的Model层数据验证
    poj 1556 The Doors 线段相交判断+最短路
    poj 1269 Intersecting Lines 求直线交点 判断直线平行共线
    string 函数操作
    poj 1066 Treasure Hunt 线段相交判断
    poj 1410 Intersection 线段相交判断
    poj 3347 Kadj Squares 扩大数据化整数
  • 原文地址:https://www.cnblogs.com/kp1995/p/10072601.html
Copyright © 2011-2022 走看看