Python错误、调试和测试——学习笔记

1、错误处理( try...except...finally...的错误处理机制)
try:
    print('try...')
    r = 10 / int('a')
    print('result:', r)
except ValueError as e:
    print('ValueError:', e)
except ZeroDivisionError as e:
    print('ZeroDivisionError:', e)
finally:
    print('finally...')
print('END')</span>
2、调用日志,记录错误,保证程序正常退出,不实现效果但不至于出错:import logging
import logging
try:
    pass
except Exception as e:
    logging.exception(e)</span>
3、 所有的错误类型都继承自BaseException
4、通过调用import logging 并配置相关文件,将程序异常写入log文件
  • logging.basicConfig(level=logging.DEBUG,  
  •                     format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',  
  •                     datefmt='%a, %d %b %Y %H:%M:%S',  
  •                     filename='/tmp/test.log',  
  •                     filemode='w'
    
    
在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有
filename: 用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
filemode: 文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
format: 指定handler使用的日志显示格式。
datefmt: 指定日期时间格式。
level: 设置rootlogger(后边会讲解具体概念)的日志级别
stream: 用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。
若同时列出了filename和stream两个参数,则stream参数会被忽略。

format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s 用户输出的消息
5、Python 中 if __name__ == "__main__": 解析
模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名。但是也可以像一个标准的程序那样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__"。
在cmd 中直接运行.py文件,则__name__的值是'__main__';而在import 一个.py文件后,__name__的值就不是'__main__'了;从而用if __name__ == '__main__'来判断是否是在直接运行该.py文件。
6、Python 自定义模块导入方法
from package import module
注意:一定要新建python package,会自动添加一个__init__.py 文件。这里的package里面一定要有__init__.py文件,否则在import过程中pycharm会提示出错,尽管程序能运行。
7、调试 (未完待续)
8、单元测试(未完待续)
9、文档测试(未完待续)



声明:学习廖雪峰的Python教程——错误、调试和测试章节后的学习笔记,感谢Micheal Liao.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值