zoukankan      html  css  js  c++  java

  •   什么是包
        包的本质是文件夹
      为什么使用包
        函数可以使得同一个文件中代码结构更清晰
        模块(py文件)是以文件形式卒子代码结构
        如果文件越来越多管理起来也不方便,所以需要使用文件夹来管理,从文件夹级别来管理代码
      包的使用
      如何创建包
        新建一个文件夹就是一个包
      包和文件夹仅有一个区别 包中应该包含一个__init__.py文件

        __init__.py文件的作用
    包也是模块
        在导入一个模块时发生三件事都一样
        问题是,第二步需要执行被导入文件的代码,包只是个文件夹不能直接执行,所以需要提供一个py文件用来代表这个包成为

        init初始化单词的缩写,表示对包中的内容进行初始化
        包的初始化其实就是导入这个包中所有其他模块
      总结:导入包时本质上就是在导入包下的__init__.py文件
      注意:init文件的作用仅仅是导入包内模块,提供给外界使用,不应该在里面写逻辑代码

        init是可选的 可有可无
        在py2中要求必须有,py3中可选
        如果没有提供init文件,在使用模块时就直接使用文件夹点需要的模块名称
      init的好处
        可以将包内模块的功能直接导入__init__中 这样一来对于包的使用者而言
        可以无需考虑要使用的功能在哪个文件中,直接调用功能即可
      使用包的流程
          1.创建一个包
          2.编写包内部的模块代码
          3.写完之后打开init文件,将需要提供给外界使用的模块导入其中


      相对导入和绝对导入
      相对
        指的时相对于某个模块而言的导入路径
      语法:
        from .import 名称
        .表示的是当前这一级目录
        再加一个点表示上一级..
      注意:执行文件中不能使用相对导入
        1.使用相对导入时不能使用点返回到执行文件所在的一层
        ValueError: attempted relative import beyond top-level package
      相对导入 超出顶层包
        2.相对导入仅用于同一个包内的模块间相互导入
      绝对
        指的是从执行文件开始的绝对路径,注意不是文件的绝对路径
      导入时需要注意
        1.import导入时,点的后面必须时一个模块或者包名
        2.from导入式import后面不能出现点
      循环导入
        开发时模块可能有点多,极有可能出现循环导入
        循环导入指的是
        两个模块 相互导入 你导我 我导入你
        会出现以下错误:AttributeError: module 'm1' has no attribute 'show_info'
        解决方案就是不要循环导入,这明显是设计有问题

  • 相关阅读:
    Linux内核分析——第四章 进程调度
    Linux内核分析——可执行程序的装载
    Linux内核分析——第七章 链接
    Linux内核分析——第三章 进程管理
    Linux内核分析——进程的描述和进程的创建
    Linux内核分析——第十八章 调试
    Linux内核分析——第五章 系统调用
    20145201李子璇 《网络对抗》 Web安全基础实践
    20145201李子璇 《网络对抗》 Web基础
    20145201 李子璇 《网络对抗》网络欺诈技术防范
  • 原文地址:https://www.cnblogs.com/ShenJunHui6/p/10298709.html
Copyright © 2011-2022 走看看