python笔记(模块导入 异常处理 三级菜单)

本文详细介绍了Python中模块导入的规则与顺序,包括内置、扩展及自定义模块的使用,以及如何通过__all__控制模块导出。此外,深入探讨了Python的异常处理机制,列举了各种异常类型,并提供了异常处理的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、模块导入
1.当导入一个模块时先从sys.modules查看导入了哪些模块
2.写代码时模块的导入顺序规则:
(1).内置模块
(2).扩展模块
(3).自己定义模块
3.若使用了import */frrom x import * __all__ = [xxx,xx,x]可以指定列表里的方法可使用
4.__name__:在模块中有一个变量__name__,当我们直接执行这个模块的时候,__name__ == '__main__’,当我们在其他文件导入执行模块__name_== 模块名

二、异常处理
1.语法错误
2.逻辑错误
3.总结:
BaseException: 所有异常的基类
SystemExit: 解释器请求退出
KeyboardInterrupt:用户中断执行(通常是输入^C)
Exception: 常规错误的基类
StopIteration: 迭代器没有更多的值
GeneratorExit: 生成器(generator)发生异常来通知退出
StandardError: 所有的内建标准异常的基类
ArithmeticError: 所有数值计算错误的基类
FloatingPointError: 浮点计算错误
OverflowError: 数值运算超出最大限制
ZeroDivisionError: 除(或取模)零 (所有数据类型)
AssertionError: 断言语句失败
AttributeError: 对象没有这个属性
EOFError: 没有内建输入,到达EOF 标记
EnvironmentError: 操作系统错误的基类
IOError: 输入/输出操作失败
OSError: 操作系统错误
WindowsError: 系统调用失败
ImportError: 导入模块/对象失败
LookupError: 无效数据查询的基类
IndexError: 序列中没有此索引(index)
KeyError: 映射中没有这个键
MemoryError: 内存溢出错误(对于Python 解释器不是致命的)
NameError: 未声明/初始化对象 (没有属性)
UnboundLocalError: 访问未初始化的本地变量
ReferenceError: 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError: 一般的运行时错误
NotImplementedError: 尚未实现的方法
SyntaxError Python: 语法错误
IndentationError: 缩进错误
TabError: Tab 和空格混用
SystemError: 一般的解释器系统错误
TypeError: 对类型无效的操作
ValueError: 传入无效的参数
UnicodeError: Unicode 相关的错误
UnicodeDecodeError: Unicode 解码时的错误
UnicodeEncodeError: Unicode 编码时错误
UnicodeTranslateError: Unicode 转换时错误
Warning: 警告的基类
DeprecationWarning: 关于被弃用的特征的警告
FutureWarning: 关于构造将来语义会有改变的警告
OverflowWarning: 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning: 关于特性将会被废弃的警告
RuntimeWarning: 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning: 可疑的语法的警告
UserWarning: 用户代码生成的警告

(1)Exception:万能异常
(2)处理多个异常

except error1:
except error2:

(3)异常处理形式

try:
     'xxxxxxxxxxxx'
except xxxxerror:
    'xxxxxxxxxxxxx'
else:
    'xxxxxxxxxxxxxxx'
finally:
    'xxxxxxxxxxxxxx'  (不管有没有错都执行)

(4)错误起名

try:
    a = int(input())
    c = 1/a
    print(c)
except ZeroDivisionError as q:  #给错误起个名
    print('xxxxxxxxx',q)

3.三级菜单

mune = {
    '三班':{
        '学委':{
            '1':
                {1,2,3},
            '2':
                {4,5,6}
        },
        '班长':{
            'a':
                {7:{}, 8:{}, 9:{}},
            'b':
                {10:{}, 11:{}, 12:{}}
        }
    },
    '四班':{
        '学委': {
            '3':
                {13:{}, 14:{}, 15:{}},
            '4':
                {16:{}, 17:{}, 18:{}}
        },
        '班长': {
            'c':
                {19:{}, 20:{}, 21:{}},
            'd':
                {22:{}, 23:{}, 24:{}}
        }
    },
    '五班':{
        '学委': {
            '5':
                {25:{}, 26:{}, 27:{}},
            '6':
                {28:{}, 29:{}, 30:{}}
        },
        '班长': {
            'e':
                {31:{}, 32:{}, 33:{}},
            'f':
                {34:{}, 35:{}, 36:{}}
        }
    }
}

#三级菜单(用堆栈方式实现)
l = [mune]
while l:
    for key in l[-1]:
        print(key)
    k = input('>>').strip()
    if k in l[-1] and l[-1][k]:
        l.append(l[-1][k])
    elif k == 'b':
        l.pop()
    elif k == 'q':
        break
    else:continue

#递归实现
def digui(dic):
    while True:
        for k in dic:print(k)
        key = input('>>').strip()
        if key == 'b' or key == 'q':return key
        elif key in dic.keys() and dic[key]:
            ret = digui(dic[key])
            if ret == 'q':return 'q'
digui(mune)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值