python学习——基础(八)
2019独角兽企业重金招聘Python工程师标准>>>
python 内置了一套try...except...finally...的错误处理机制;
try:print 'try'r = 10 / 0print 'result:', rexcept ZeroDivisionError, e:print 'except:', efinally:print 'finally'结果:
try
except: integer division or modulo by zero
finally
finally语句块是一定会执行的;
此外,如果没有错误发生,可以在except语句块后面加一个else,当没有错误发生时,会自动执行else语句:
try:print 'try'r = 10 / 1print 'result:', rexcept ZeroDivisionError, e:print 'except:', eelse:print 'no error'
finally:print 'finally'结果:
try
result: 10
no error
finally
Python所有的错误都是从BaseException类派生的,常见的错误类型和继承关系看这里:
https://docs.python.org/2/library/exceptions.html#exception-hierarchy
可以导入logging模块记录异常到日志文件中;
import logging
logging可以指定信息的级别:debug,info,warning,error这几个级别,你可以指定该文件的日志级别
import logging
logging.basicConfig(level=logging.INFO)
logging的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件
rasie将错误进行抛出,这种办法不仅可以解决了不知道如何处理的情况;同时可以改变抛出错误的类型;
try:print 'try'r = 10 / 0print 'result:', rexcept ZeroDivisionError, e:print 'except:', eraise ValueError(e)finally:print 'finally'结果:
try
except: integer division or modulo by zero
finally
Traceback (most recent call last):File "F:/hz_viking/PycharmProjects/django_demo/WebBase/apps/cm/syc/varibleScope.py", line 353, in <module>raise ValueError(e)
ValueError: integer division or modulo by zero
断言:
用assert(断言)去替代print;
def test(i):try:print 'try'assert i != 0, 'i is zero' # 断言i是否为0,如果为False,就会打印后面的说明except ZeroDivisionError, e:print 'except:', eraise ValueError(e)finally:print 'finally'test(0)结果:
Traceback (most recent call last):File "F:/hz_viking/PycharmProjects/django_demo/WebBase/apps/cm/syc/varibleScope.py", line 358, in <module>test(0)File "F:/hz_viking/PycharmProjects/django_demo/WebBase/apps/cm/syc/varibleScope.py", line 349, in testassert i != 0, 'i is zero'
AssertionError: i is zero
程序中如果到处充斥着assert,和print相比也好不到哪去。不过,启动Python解释器时可以用-O参数来关闭assert
python -O err.py
单元测试:
为了编写单元测试,我们需要引入Python自带的unittest模块:
import unittest
class TestDict(unittest.TestCase):def test_init(self):d = {'java':'diffcult', 'python':'midle'}self.assertEqual(d.get('java'), 'diffcult')
编写单元测试时,我们需要编写一个测试类,从unittest.TestCase继承。
以test开头的方法就是测试方法,不以test开头的方法不被认为是测试方法,测试的时候不会被执行。
单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。
单元测试的测试用例要覆盖常用的输入组合、边界条件和异常。
单元测试代码要非常简单,如果测试代码太复杂,那么测试代码本身就可能有bug。
单元测试通过了并不意味着程序就没有bug了,但是不通过程序肯定有bug。
转载于:https://my.oschina.net/u/257801/blog/522170
python学习——基础(八)相关推荐
- C++学习基础八——重载输入和输出操作符
C++学习基础八--重载输入和输出操作符 一.重载输入操作符的要点: 1.返回值为istream &. 2.第一个参数为istream &in. 3.第二个参数为自定义类型的引用对象( ...
- python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍
目录 python学习第八讲,python中的数据类型,列表,元祖,字典,之字典使用与介绍.md 一丶字典 1.字典的定义 2.字典的使用. 3.字典的常用方法. python学习第八讲,python ...
- Python学习-基础介绍
Python学习-基础介绍 Python基本语法介绍 变量 数据类型 列表 list 添加 删除 统计分析 切片器 set 集合 添加 判断是否存在 删除 数组 array 运算符 控制语句 if/e ...
- Python学习基础必备知识点:字典dict详解
取键值 1.Python 字典 setdefault() 方法和 get() 方法类似,返回指定键的值,如果键不在字典中,将会添加键并将值设置为一个指定值,默认为None. get() 和 setde ...
- [转载] python学习-基础教程、深度学习
参考链接: 在Python中使用NLTK对停用词进行语音标记 人工智能学习线路图 Python教程 Python 教程Python 简介Python 环境搭建Python 中文编码Python 基础语 ...
- Python 学习 --- 基础知识
第一章 1.python于1989年底由范.罗萨姆始创.是一种面向对象的解释型语言. 第二章 python起步 1.输出语句print. print和%结合使用,实现字符串的替换,与C语言中的prti ...
- Python学习笔记(八)爬虫基础(正则和编解码)
知识点 正则 正则匹配url,引用re库,将需要匹配的字段用(.*?)来匹配,可以匹配任何字符串.如果有换行,可以用如下方式解决: 1. ([\s\S]*?) 2. re.findall(reg,ht ...
- Python学习-基础篇7 网络编程
#pytho 基础之socket编程 一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架 ...
- Python学习基础方便查询
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
最新文章
- 王道考研 计算机网络笔记 第六章:应用层
- SQL2008-分页显示3种方法
- C++ operator关键字(重载操作符)
- django models索引_Django开发者常犯的7种错误
- labview如何加载库_迈德威视工业相机LabView 开发指导
- C和C++数据结构算法
- android拍照功能无预览,Android 无预览拍照
- vue3+typescript引入外部文件
- python FOR循环
- Java描述 数据结构与算法
- finereport前端组件类思维导图
- java单例模式_Java 实现单例模式的 9 种方法
- 论文笔记_S2D.45_DeepVO: 基于深度循环卷积神经网络的端到端视觉里程计
- python飞机大战游戏代码_python实现飞机大战小游戏
- 深入理解JVM虚拟机
- vue、vant上传附件功能实现
- 【C++刷LeetCode套路1】Array题型: 双指针Two Pointers套路
- 开源免费的C/C++网络库(c/c++ sockets library) 七剑下天山
- 双语美文|治愈系英文段子,你对人生过敏吗
- 一千万人都在等小黄车OFO退押金
热门文章
- 机器学习算法(6)——随机森林
- edit with idle 没反应_搬个家,猫咪不吃不喝甚至猝死?可能是你没做好“前戏”...
- php 获得汉字拼音首字母的函数,php 获得汉字拼音首字母的函数
- MyBatis复习(五):获取多表关联查询结果
- linux bash环境变量,linux-bash环境变量
- html iframe 不限制大小_渗透技术再升级:如何利用HTML注入泄漏用户数据
- python对键和值有没有类型限制_第026课:词典:索引不易使用时2,讲,字典,当,不好...
- SpringDataRedis的简单案例使用
- Linux 免密登录和配置环境变量
- P2419 [USACO08JAN]牛大赛Cow Contest