python笔记——调试和异常处理

type()函数

type()函数既可以返回一个对象的类型,又可以创建出新的类型。
type('类名',(继承的父类),dict(方法绑定函数))
使用type()函数创建的类和直接写class完全一样,因为python解释器遇到class定义时,仅仅是扫描以下class定义的语法,然后调用type()函数创建出class。

metaclass()

当我们定义了类之后,可以根据这个类创建出实例,所以:
先定义metaclass,就可以创建类,最后创建实例。

错误处理

try

try...excepy...finally
流程为:try产生错误跳转到except,except执行结束后如果又finally则跳转到finally。

调试

assert

def foo(s):
    n = int(s)
    assert n != 0, 'n is zero!'
    return 10 / n

def main():
    foo('0')

assert表示:如果n != 0 得结果为true,则程序继续进行
如果断言失败,assert语句本身就会抛出AssertionError错误,内容为表达式后的'n is zero!'
python解释器可以使用-O参数来关闭assert

logging

import logging
logging.basicConfig(level=logging.INFO)

logging不会抛出错误,且可以输出错误信息到文件。
logging记录的信息等级有:debug,info,warning,error等几个级别。

pdb

pdb适用于python解释器,可使程序一步一步运行。

(Pdb) n
> /Users/michael/Github/learn-python3/samples/debug/err.py(3)<module>()
-> n = int(s)
(Pdb) n
> /Users/michael/Github/learn-python3/samples/debug/err.py(4)<module>()
-> print(10 / n)

使用n可以单步执行代码,使用p 变量名查看变量

(Pdb) p s
'0'
(Pdb) p n
0

使用q结束调试

pdb.set_trace()

程序内使用pdb.set_trace()可以设置一个断点。
运行后,程序会在断点处暂停并进入pdb调试环境

原文地址:https://www.cnblogs.com/pr1s0n/p/12246008.html