Python Jupyter Notebook 中的错误异常与代码调试
2016-10-08 14:57
921 查看
Python Jupyter Notebook 中的错误异常与代码调试 - Datacademy 数析学院 | Datartisan http://datacademy.io/lesson/65
首先我们定义两个函数,以便够造成一些错误和异常,方便来进行对于 Jupyter Notebook 的错误异常相关知识的学习:
In [1]:
首先,通过调用函数,我们来引发一个“分母为零”的异常:
In [2]:
在 notebooke 中执行
In [3]:
接着,我们引发相同的错误来对比输出的信息:
In [4]:
可以看到,输出的异常信息不但少了很多,而且内容结构也发生了变化,出错语句的上下文将会被直接隐去,仅是标注出了语句本身与其对应的代码行序号。
如果不喜欢这种简单的输出结果,我们也可以在 notebooke 中执行
In [5]:
再次执行上文中引发错误的代码,我们可以发现系统再次输出了那段熟悉而复杂的异常信息:
In [6]:
接下来,我们简要说明一下
在错误异常发生时,我们可以运用
In [7]:
同时,在调试模式下,我们也可以通过输入“up”来对外层函数进行调试,查看其中的变量情况。
In [8]:
另外,在 notebooke 中执行 %pdb on 可以设置为当异常发生时自动进入调试模式,在某些特殊的情况下,这么做可能会更为方便:
In [9]:
Python Jupyter Notebook 中的错误异常与代码调试
首先我们定义两个函数,以便够造成一些错误和异常,方便来进行对于 Jupyter Notebook 的错误异常相关知识的学习:In [1]:
def func1(a, b): return a / b def func2(x): a = x b = x - 1 return func1(a, b)
首先,通过调用函数,我们来引发一个“分母为零”的异常:
In [2]:
func2(1)
ZeroDivisionErrorTraceback (most recent call last)
<ipython-input-2-b2e110f6fc8f> in <module>()
----> 1 func2(1)<ipython-input-1-d849e34d61fb> in func2(x)
5 a = x
6 b = x - 1
----> 7 return func1(a, b)
<ipython-input-1-d849e34d61fb> in func1(a, b)
1 def func1(a, b):
----> 2 return a / b
3
4 def func2(x):
5 a = x
ZeroDivisionError: integer division or modulo by zero
在 notebooke 中执行
%xmode Plain可以设置为当异常发生时只展示简单的异常信息。
In [3]:
%xmode Plain
Exception reporting mode: Plain
接着,我们引发相同的错误来对比输出的信息:
In [4]:
func2(1)
Traceback (most recent call last):
File "<ipython-input-4-b2e110f6fc8f>", line 1, in <module>
func2(1)File "<ipython-input-1-d849e34d61fb>", line 7, in func2
return func1(a, b)
File "<ipython-input-1-d849e34d61fb>", line 2, in func1
return a / b
ZeroDivisionError: integer division or modulo by zero
可以看到,输出的异常信息不但少了很多,而且内容结构也发生了变化,出错语句的上下文将会被直接隐去,仅是标注出了语句本身与其对应的代码行序号。
如果不喜欢这种简单的输出结果,我们也可以在 notebooke 中执行
%xmode Verbose来还原显示详细异常信息的模式,
In [5]:
%xmode Verbose
Exception reporting mode: Verbose
再次执行上文中引发错误的代码,我们可以发现系统再次输出了那段熟悉而复杂的异常信息:
In [6]:
func2(1)
ZeroDivisionErrorTraceback (most recent call last)
<ipython-input-6-b2e110f6fc8f> in <module>()
----> 1 func2(1)global func2 = <function func2 at 0x7fa890d9b410>
<ipython-input-1-d849e34d61fb> in func2(x=1)
5 a = x
6 b = x - 1
----> 7 return func1(a, b)
global func1 = <function func1 at 0x7fa890d9b398>
a = 1
b = 0
<ipython-input-1-d849e34d61fb> in func1(a=1, b=0)
1 def func1(a, b):
----> 2 return a / b
a = 1
b = 0
3
4 def func2(x):
5 a = x
ZeroDivisionError: integer division or modulo by zero
接下来,我们简要说明一下
%debug语句的用法:
在错误异常发生时,我们可以运用
%debug来进行代码调试,例如在上文中“分母为零”的异常发生后,执行
%debug将进入直接出错函数func1的调试模式,我们可以在调试模式自带的对话框中输入变量名来查看函数中的变量情况,输入“quit”则退出该模式。
In [7]:
%debug
> <ipython-input-1-d849e34d61fb>(2)func1() 1 def func1(a, b): ----> 2 return a / b 3 4 def func2(x): 5 a = x ipdb> a 1 ipdb> b 0 ipdb> quit
同时,在调试模式下,我们也可以通过输入“up”来对外层函数进行调试,查看其中的变量情况。
In [8]:
%debug
> <ipython-input-1-d849e34d61fb>(2)func1() 1 def func1(a, b): ----> 2 return a / b 3 4 def func2(x): 5 a = x ipdb> up > <ipython-input-1-d849e34d61fb>(7)func2() 3 4 def func2(x): 5 a = x 6 b = x - 1 ----> 7 return func1(a, b) ipdb> x 1 ipdb> quit
另外,在 notebooke 中执行 %pdb on 可以设置为当异常发生时自动进入调试模式,在某些特殊的情况下,这么做可能会更为方便:
In [9]:
%xmode Plain%pdb on
func2(1)
Exception reporting mode: PlainAutomatic pdb calling has been turned ON
Traceback (most recent call last):
File "<ipython-input-9-35491686a29e>", line 3, in <module>
func2(1)File "<ipython-input-1-d849e34d61fb>", line 7, in func2
return func1(a, b)
File "<ipython-input-1-d849e34d61fb>", line 2, in func1
return a / b
ZeroDivisionError: integer division or modulo by zero
> <ipython-input-1-d849e34d61fb>(2)func1() 1 def func1(a, b): ----> 2 return a / b 3 4 def func2(x): 5 a = x ipdb> a 1 ipdb> b 0 ipdb> up > <ipython-input-1-d849e34d61fb>(7)func2() 3 4 def func2(x): 5 a = x 6 b = x - 1 ----> 7 return func1(a, b) ipdb> x 1 ipdb> quit
相关文章推荐
- TensorFlow学习笔记[1]: TensorFlow安装及在Jupyter notebook中用Pythond代码并生成散列点图
- 在Jupyter notebook和spyder上用python做数据挖掘,安装使用简介和常见错误
- 在Jupyter Notebook里面写Python代码和数学公式
- ubuntu安装 Jupyter notebook 显示错误: ImportError: No module named 'pysqlite2'
- Python,Jupyter Notebook,IPython快速安装教程
- Jupyter notebook 增加Python2.7
- python jupyter notebook 工作路径
- Python---jupyter notebook 远程访问
- 用windows浏览器打开Linux的Jupyter notebook开发、调试示例
- python ipython notebook或者 jupyter notebook 的安装
- GitHub用jupyter Notebook查看代码
- Python安装 Anaconda 以及jupyter notebook配置
- Caffe学习系列(13):数据可视化环境(python接口)配置 jupyter notebook
- python 自定义模块, 将jupyter notebook 作为模块导入
- Python-Jupyter Notebook使用技巧
- ubuntu中运行jupyter notebook创建Python文件的时候报错
- python︱Anaconda安装、简介(安装报错问题解决、Jupyter Notebook)
- Python基础学习代码之错误和异常
- Jupyter notebook中设定Kernel为Python2和Python3
- Mac下安装python以及jupyter notebook