Python3零基础学习笔记十

时间:2021-09-01 19:05:07
包内的__xxx__.py
__init__.py 文件
    是常规包内必须存在的文件,__init__.py会在导入包时被自动调用
    作用:
          1.编写此包的内容
          2.在内部添加包的文档字符串
          3.在__init__.py文件内可以加载此包所依赖的其他模块
    __init__.py在  ‘’包.__file__ ‘’ 时显示,对应路径,并作为代表包的形式存在。
    在__init__.py内添加变量,会作为包的属性显示。
    #############
    当调用包时,__init__.py会先执行,如果里边有执行语句则执行,没有则等待调用。
(__init__)/包的__all__列表
    包的作用:
       用来记录此包中有哪些子包或模块需要导入
       当用 ‘from 包 import *’导入时,只查找__all__中的模块或子包
    说明:
       __all__列表只在from xxx import *  语句时起作用。
       此all列表存在于‘导入包’的__init__.py文件中,子文件夹内的不算。
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
重点:当子包或者子包内的模块被导入时,上一层的包也会被先导入:
  例:import mypack.games.contra
      事实上会先导入mypack,再导入games,再导入contra
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
包的相对导入:
  包的相对导入是指包内的模块的相互导入
语法:
  from 相对路径包或者模块 import 属性或模块名
  或
  from 相对路径包或者模块 import *
相对路径:
  在from xxxx import xx  语句中,xxxx部分可以使用相对路径
  . 代表当前目录
  ..代表上一级
  ...代表上两级
  ....以此类推
  注:1.相对导入时不能超出包的外部,比如..menu可以用,但...mypack.menu不可用
     2.相对导入要避免循环导入
示例:from .tanks import *
     from ..menu import xxx
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
异常(基础)exception
   什么是错误:
         错误是指由于逻辑或者语法等异常导致一个程序无法正常执行的问题
   错误的特点:
         有些错误无法预知
   什么是异常:
         异常时程序出错时标识的一种状态
         当异常发生时,程序不会在向下执行,而转去调用此函数的地方,待处理此错误并恢复为正常状态
   异常的作用:
         通知上层调用者有错误产生需要处理
         用作信号通知
=================
try语句的两种用法:
   try—except语句:
     try:
       可能触发异常的语句
     except 错误类型1 [as 变量1]:
       异常处理语句
     except 错误类型2 [as 变量2]:
       异常处理语句2
     except 错误类型 3 [as 变量3]:
       异常处理语句3
     ...
     except:
       异常处理语句other
     else:
       未发生异常的语句
     finally: <<<---奇葩中的奇葩,有异常,未列出,也会执行,还是会发生error
       最终语句
   作用:尝试捕获异常,将程序转为正常状态并继续执行
   语法说明:
     1.as 子句是用于绑定错误对象的变量,可以省略
     2.except 子句可以有一个或者多个,但至少有一个
     3.else 子句可以有一个个或者多个,也可以省略,这个句子如果执行,则表明没错误
     4.finally 子句最多只能有一个,也可以省略
try-finally语句:
    语法:
        try:
            可能触发异常的语句
        finally:
            最终语句
     语法说明:
         finally 子句不可以省略
         一定不存在except 子句
      作用:
         通常用try-finally 语句来做触发异常时必须要处理的事件,无论异常是否发生,finally子句都会被执行
      注:
          try-finally 语句不会改变程序的(正常/异常)状态
raise 语句:
      作用:
           触发一个错误,让程序进入异常状态
      语法:
           raise 异常类型
        或
           raise 异常对象

assert 语句:(断言语句)
      语法:
          assert 真值表达式,错误数据(通常是字符串)
      作用:
          当真值表达式为False时,用错误数据创建一个AssertionError类型的错误,并进入异常状态
      等同于:
          if 真值表达式 == False:
              raise AssertionError(错误数据)
→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
为什么要用异常处理机制:
      在程序调用层数较深时,向主调函数传递错误信息需要层层return太过麻烦,所以用异常处理机制。