zoukankan      html  css  js  c++  java
  • python之路--day16---包

    包:

      就是一个包含有__init__.py文件的文件夹,

      创建包的目的就是为了用文件夹将文件/模块组织起来

      

      强调:

        1,python3 下,即使包下没有__init__.py文件,import包不会报错

         python2 下,一定要有__init__.py文件,否则报错

        2,创建包的目的不是为了运行,而是被导入使用,

          包的本质就是一个模块

    import  aaa

    首次导入包时,发生的三件事:

      1,产生一个包的名称空间

      2,执行包下的__init__.py文件,将产生的名字存放于包的名称空间中,

      3,在当前执行文件中拿到一个名字aaa,这个名字指向包的名称空间

     

    # print(aaa.x) #aaa.x 就是问__init__.py要一个名字x
    # print(aaa.y)
    
    # print(aaa.m1) #aaa.m1 就是问aaa.__init__.py要一个名字m1
    # aaa.m1.f1()
     1 # from aaa.bbb import m3
     2 
     3 #强调:
     4  1,在导入时带点的,点的左边必须是一个包,这是导入包特有的语法
     5  2,包内,模块直接的导入应该使用from....import....
     6  3,from....import....    import后必须是一个明确的名字,没有任何的前缀
     7       实例:
     8         from a.b.c.d.f import g.h.x
     9             这是一个错误的导入方法
    10             1,f左边必须都是包
    11             2,import后的名字不能有任何前缀

    绝对导入和相对导入

     绝对导入:以包名起始

    相对导入:用 .  或者 ..  方式为起始(只能在一个包中使用,不能用于不同目录内

    # # 绝对导入
    # from nb.m1 import f1,f2
    # from nb.m2 import f3,f4
    # from nb.m3 import f5,f6
    # from nb.p1.m4 import f7
    
    
    # 相对导入
    from .m1 import f1,f2
    from .m2 import f3,f4
    from .m3 import f5,f6
    from .p1.m4 import f7

  • 相关阅读:
    5.0、Android Studio调试你的应用
    4.4、Android Studio在命令行运行Gradle
    4.3、Android Studio突破64K方法限制
    4.2、Android Studio压缩你的代码和资源
    4.1、Android Stuido配置你的Build Variant
    【java多线程系列】java中的volatile的内存语义
    【java多线程系列】java内存模型与指令重排序
    4.0、Android Studio配置你的构建
    HashMap
    zk常用命令
  • 原文地址:https://www.cnblogs.com/guodengjian/p/8745053.html
Copyright © 2011-2022 走看看