zoukankan      html  css  js  c++  java
  • 包的使用

    包的使用

    一、遵循三个步骤

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

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

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

    print(aaa.x)#就是问,aaa下面__init__.py要一个名字x
    print(aaa.y)
    print(aaa.m1)#就是问aaa下面__init__.py要一个m1

    注意一点是:在包内是没有执行文件的要调用功能要通过上面的方法。 

    如果我要在执行文件下找到c文件中的__init__.py

    #在执行文件中
    Import  aaa
    from aaa import bbb
    print(aaa.bbb.ccc.x)
    #在bbb文件同级的__init__.py中输入import 
    from aaa.bbb import ccc   #这一点很重要

    二、相对导入和绝对导入

    刚才我们上面写的都是绝对导入,但是是绝对导入又一个弊端就是文件名字被写死了,万一要改,就瞬间爆炸。

    所以,我们要有相对导入。

    # from nb import m1,m2,m3
    
    # # 绝对导入
    # 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

    一个 . 代表着前一个文件,这里代表着前面的nb。

    两个 .. 代表着前面两个文件。

    但是要注意的一点是相对导入只能要在你要的文件下面才可以用。

  • 相关阅读:
    报错注入验证sqli
    pycharm out of memory 闪退
    集群、分布式、负载均衡区别与联系
    如何获取线程池ThreadPoolExecutor正在运行的线程
    docker快速安装mysql
    基于guava实现本地缓存
    NIO selector 多路复用reactor线程模型
    网络编程之NIO
    网络编程之BIO
    反射性能研究,反射赋值与set方法赋值对比
  • 原文地址:https://www.cnblogs.com/wuchenyu/p/8745210.html
Copyright © 2011-2022 走看看