day16Python包

包(模块包)package
    包的导入:import 语句 / from import 语句 / from import * 语句
--------------------------------------------------------------------
__int__.py内的__all__列表:
    作用:用来记录此包中有哪些包或模块需要从from import *语句导入时被导入:
    说明:__all__列表只在from xxx import * 语句中起作用
包的相对导入:
    是指包内模块的相互导入
    语法:
        from 相对路径包或模块 import 属性或模块
        或from 相对路径或模块 import *
        说明:
        包的相对导入不能作用于import xxx 语句中
        相对路径:
            .代表当前目录
            ..代表上一级目录
            ...代表上二级目录
            ....以此类推
        注:相对导入时不能超出包的外部
包的加载路径:
    同模块的加载路径搜索
    1.搜索当前路径
    2.搜索sys.path给定的路径
异常(基础)exception
    什么是错误:
        错误是指由于逻辑或语法等导致一个程序无法正常执行的问题
    特点:有些错误是无法预知的
    什么是异常:
        异常是程序出错时标识多大的一种状态,当异常发生时,程序不会再向下执行,而转去调用此函数的地方待处理此错误并恢复为正常状态
    作用:用作信号,通知上层调用者有错误需要处理
try 语句
    两种语法:
    try-except 语句
    try-finally 语句
try-except语句语法:
    try:
        可能触发异常的语句
    except 错误类型1[as 变量1]
        异常处理语句
    except 错误类型2 [as 变量2]
        异常处理语句2
    except (错误类型3,错误类型2) [as 变量3]:
        异常处理语句3
    ...
    except:
        异常处理语句other
    else:
        未发生异常语句
    finally:
        最后语句
    作用:尝试捕获异常,将程序转为正常
----------------------------------------------------------------------------------------
练习:
    写一个函数:def get_score():
            ...
    此函数用来获取用户输入的学生成绩信息(0-100)的整数,如果用户输入出现异常则此函数返回0,否则返回用户输入的成绩
    score  = get_score()
    print("您输入的成绩:",score)
----------------------------------------------------------------------------------------
Python全部的异常类型:
错误类型        说明
ZeroDivisionError    除(或取模)零 (所有数据类型)
ValueError        传入无效的参数
AssertionError        断言语句失败
StopIteration        迭代器没有更多的值
IndexError        序列中没有此索引(index)
IndentationError    缩进错误
OSError            输入/输出操作失败
ImportError        导入模块/对象失败
NameError        未声明/初始化对象 (没有属性)
AttributeError        对象没有这个属性
BaseException        所有异常的基类
SystemExit        解释器请求退出
KeyboardInterrupt    用户中断执行(通常是输入^C)
Exception        常规错误的基类
GeneratorExit        生成器(generator)发生异常来通知退出
StandardError        所有的内建标准异常的基类
ArithmeticError        所有数值计算错误的基类
FloatingPointError    浮点计算错误
OverflowError        数值运算超出最大限制
EOFError        没有内建输入,到达EOF 标记
EnvironmentError    操作系统错误的基类
OSError            操作系统错误
WindowsError        系统调用失败
LookupError        无效数据查询的基类
KeyError        映射中没有这个键
MemoryError        内存溢出错误(对于Python 解释器不是致命的)
UnboundLocalError    访问未初始化的本地变量
ReferenceError        弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError        一般的运行时错误
NotImplementedError    尚未实现的方法
SyntaxError Python    语法错误
TabError        Tab 和空格混用
SystemError        一般的解释器系统错误
TypeError        对类型无效的操作
UnicodeError        Unicode 相关的错误
UnicodeDecodeError    Unicode 解码时的错误
UnicodeEncodeError    Unicode 编码时错误
UnicodeTranslateError    Unicode 转换时错误
以下为警告类型--------------------------------
Warning            警告的基类
DeprecationWarning    关于被弃用的特征的警告
FutureWarning        关于构造将来语义会有改变的警告
OverflowWarning        旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning        可疑的运行时行为(runtime behavior)的警告
SyntaxWarning        可疑的语法的警告
UserWarning        用户代码生成的警告
--------------------------------------------------
try - finally语句
    语法:
    try:
        可能触发异常的语句
    finally:
        一定要执行的最终的语句
    说明:
    1.finally子句不可以省略
    2.一定不存在except子句
    作用:通常try-finally语句来做触发异常时必须要处理的事情,无论异常是否发生,finally子句都会执行
    注:try-finally语句不会改变程序的状态(正常/异常状态)
raise 语句:
    作用:触发一个错误,让程序进入异常状态,
    语法:
    raise 异常类型:
    或 raise 异常对象
    示例:
-------------------------------------------------------------------------
练习:
    写一个函数get_age()用来获取一个人的年龄信息:
    此函数规则用户只能输入1-140之间的整数,如果用户输入其他的数则直接触发valueerror类型的错误
    def get_age():
    ....
    try:
        age = get_age()
        print('用户输入的年龄是',age)
    except valueerror as err:
        print("用户输入的不是1-140的整数!!!获取年龄失败")        
--------------------------------------------------------------------------
assert 语句(断言语句)
    语法:
    assert 真值表达式,错误数据  (通常是字符串)
    作用:
    当真值表达式为false时,用错误数据创建一个AssertionError 类型的错误,并进入异常状态
    等同于:
        if 真值表达式 == False:
            raise AssertionError(错误数据)
        示例
异常小结:
    语句:
    try-except
        捕获异常,尝试接收异常通知:
    try-finally
        执行一定要执行的语句
    raise
        发送异常通知,将程序转为异常通知(进入异常流程)
    assert
        根据条件来触发AssertionError类型的异常
    with 语句(以后再学)
为什么要用异常处理机制:
    在程序调用层数较深时,向主调用函数传递错误信息需要层层return返回比较麻烦,所以用异常处理机制来解决此类问题
----------------------------------------------------------------------------------------------------
练习:
    1.一个球从100米高空落下,每次落地后反弹高度为原高度的一半再落下,写程序
        1.算出皮球再第十次落地后反弹多高
        2.打印出皮球共经历了多少米路程
    2.分解质因数,输入一个正整数,分解质因数如输入:90则打印如:90=2*3*3*5
    (质因数是指最小能被原数整除的素数(不包含1))    
    3.写一个程序打印杨辉三角(只打印6层)
               1
              1 1
             1 2 1
            1 3 3 1
           1 4 6 4 1
        1 5 10 10 5 1


猜你喜欢

转载自blog.csdn.net/robin13438235412/article/details/80766940