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

    一、什么是包

      包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来

    二、注意点
        1、导包就是调用_init_.py文件

      2、凡是在导入时带点的,点的左边都必须是一个包,否则非法

      3、 如果使用绝对导入,绝对导入的起始位置都是以包的顶级目录为起始点

          4、 但是包内部模块的导入通常应该使用相对导入,用.代表当前所在的文件(而非执行文件),..代表上一级

     三、示例

     1 # 导包其实就是在导入包中的_init_.py文件
     2 
     3 在p1包中
     4     _init_.py文件
     5         from p1.f1 import f
     6     m1文件
     7         def f():
     8             print('ffffffffffffffff')
     9 
    10 在run.py执行文件
    11     from p1.m1 import f
    12     f()

     四、相对导入与绝对导入

    # 绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入
    #        优点: 执行文件与被导入的模块中都可以使用
    #        缺点: 所有导入都是以sys.path为起始点,导入麻烦
    
    # 相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入
    #        符号: .代表当前所在文件的文件加,..代表上一级文件夹,...代表上一级的上一级文件夹
    #        优点: 导入更加简单
    #        缺点: 只能在导入包中的模块时才能使用
          #注意:
            1. 相对导入只能用于包内部模块之间的相互导入,导入者与被导入者都必须存在于一个包内
            2. attempted relative import beyond top-level package # 试图在顶级包之外使用相对导入是错误的,言外之意,必须在顶级包内使用相对导入,每增加一个.代表跳到上一级文件夹,而上一级不应该超出顶级包
     
    博客内容仅供参考,部分参考他人优秀博文,仅供学习使用
  • 相关阅读:
    Angular指令2
    MD测试
    LeeCX
    Java公众号推荐
    基于云落地SLB+Tengine实现高可用集群负载均衡
    非HTTP状态下开启web视频的临时方案
    慕课网 20200330 es+geo+baidu-map 直播视频与文字版笔记
    [涨姿势]Chrome 谷歌浏览器原生截长图命令
    人人都要关注的分布式系统中的CAP理论
    疫情风险下的项目管理与紧急预案策略
  • 原文地址:https://www.cnblogs.com/linagcheng/p/9454547.html
Copyright © 2011-2022 走看看