一、模块导入
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)