zoukankan      html  css  js  c++  java
  • 关于导包问题

    1.导包其实就是在导包里的__init__文件
    以执行文件的sys.path为准(内部的导入是以顶级目录作为开头的,往后一层层找)
    1. 什么是包
    包就是一个包含有__init__.py文件的文件夹
    包本质就是一种模块,即包是用包导入使用的,包内部包含的文件也都是用来被导入使用

    2 为何要用包
    包是文件夹,那文件夹就是用来组织文件的
    # 注意:
    # 在python2中,包下必须有一个__init__.py文件,而python3中即便是没有也不会报错

    # 首次导入包,发送三件事,
    # 1. 以包下的__init_.py文件为基准来产生一个名称空间
    # 2. 执行包下的__init_.py文件的代码,将执行过程中产生的名字都丢到名称空间中
    # 3. 在当前执行文件中拿到一个名字p1,该p1就是指向__init__.py名称空间的

    # 总结包的使用无非注意三点:
    # 1. 但凡是在导入语句中带点的,点的左边都必须是一个包
    # 2. 导入包就是在导包下的__init__.py文件
    # 3. 如果使用绝对导入,绝对导入的起始位置都是以包的顶级目录为起始点
    # 4. 但是包内部模块的导入通常应该使用相对导入,用.代表当前所在的文件(而非执行文件),..代表上一级
    # 强调:
    # 1. 相对导入只能包内部的模块之间互相导入使用
    # 2. ..上一级不能超出顶级包
    import sys
    sys.path.append(r'D:脱产三期视频day181 包的使用dir1dir2')

    run.py为执行文件,m1,m2为p1里的文件。m3为p2里的文件

     

    在pgk里的__init__文件使用直接和间接方法导入m1_fn和m2_fn方法

     

    在同层目录下,使用绝对导入和相对导入m1_fn方法

     

  • 相关阅读:
    理财-4
    “大锅”遇险记
    今日份灵感开发
    持续集成简介
    redis clusert分布式集群
    redis 哨兵
    redis 主从复制
    Redis新特性ACL安全策略
    redis 快照持久化RDB和AOF
    redis 基础常用命令
  • 原文地址:https://www.cnblogs.com/haiguixiansheng/p/9457534.html
Copyright © 2011-2022 走看看