【Python进阶(二)】——程序调试方法

简介: 【Python进阶(二)】——程序调试方法

【Python进阶(二)】系列——程序调试方法,建议收藏!

该篇文章利用Python演示了程序调试方法,包括程序的基本调试方法里;错误信息显示方式;断言设置方法等内容。

1 程序调试基本方法

1.1 PDB调试

  运行程序:

#当python抛出异常或错误信息时,可以用PDB(The Python Debugger,Python调试器)进行程序调试
x=1
x1

  运行结果:

Traceback (most recent call last):
  File "<ipython-input-45-ff55524dcc80>", line 2, in <module>
    x1
NameError: name 'x1' is not defined

1.2 debug调试

  运行程序:

%debug  #打开PDB方法,退出PDB方法是输入q或quit
#除了PDB,常用的python调试器还有Pylint,Pycheaker

  运行结果:

<ipython-input-45-ff55524dcc80>(2)<module>()
      1 x=1
----> 2 x1
ipdb> x
1
ipdb> q

2 设置错误信息的显示方式

2.1 mode Plain

  运行程序:

%xmode Plain
y=1
Y

  运行结果:

Exception reporting mode: Plain
Traceback (most recent call last):
  File "<ipython-input-48-e9d491258c9c>", line 3, in <module>
    Y
NameError: name 'Y' is not defined

2.2 mode Verbose

  运行程序:

%xmode Verbose
y=1
Y

  运行结果:

Exception reporting mode: Verbose
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-49-4e5fe2f91061> in <module>
      1 get_ipython().run_line_magic('xmode', 'Verbose')
      2 y=1
----> 3 Y
        global Y = undefined
NameError: name 'Y' is not defined

2.3 debug

  运行程序:

%debug

  运行结果:

<ipython-input-49-4e5fe2f91061>(3)<module>()
      1 get_ipython().run_line_magic('xmode', 'Verbose')
      2 y=1
----> 3 Y
ipdb> x
1
ipdb> y
1
ipdb> q

3 设置断言的方法

  运行程序:

a=1
b=0
assert b!=0,"分母不能等于0"

  运行结果:

AssertionError                            Traceback (most recent call last)
<ipython-input-51-2b94eee22f18> in <module>
      1 a=1
      2 b=0
----> 3 assert b!=0,"分母不能等于0"
        global b = 0
AssertionError: 分母不能等于0

  运行程序:

%debug

  运行结果:

<ipython-input-51-2b94eee22f18>(3)<module>()
      1 a=1
      2 b=0
----> 3 assert b!=0,"分母不能等于0"
ipdb> a
ipdb> b
ipdb> a
ipdb> quuit
*** NameError: name 'quuit' is not defined
ipdb> quit


相关文章
|
1天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
2天前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
15 4
|
1天前
|
Python
Python中的push方法详解与实例
Python中的push方法详解与实例
|
2天前
|
API 开发者 Python
Python中的魔法方法:从原理到实践
【9月更文挑战第24天】本文将深入探讨Python的魔法方法,这些特殊的方法允许对象定制其行为。文章首先揭示魔法方法的本质和重要性,然后通过代码示例展示如何利用它们来增强类的功能性。最后,我们将讨论在实际应用中应注意的事项,以确保正确和高效地使用这些方法。
|
2天前
|
Python
python 类中的内置方法
python 类中的内置方法
|
2天前
|
Python
python简单分割文件的方法(python经典案例)
这篇文章介绍了两种使用Python进行文件分割的方法:通过读取指定字节数分割大文件成小文件,以及通过行数将文本文件分割成多个小文件。
11 1
|
7天前
|
Java Python
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
【9月更文挑战第18天】在 Python 中,虽无明确的 `interface` 关键字,但可通过约定实现类似功能。接口主要规定了需实现的方法,不提供具体实现。抽象基类(ABC)则通过 `@abstractmethod` 装饰器定义抽象方法,子类必须实现这些方法。使用抽象基类可使继承结构更清晰、规范,并确保子类遵循指定的方法实现。然而,其使用应根据实际需求决定,避免过度设计导致代码复杂。
|
8天前
|
存储 数据处理 索引
Python列表操作的方法总结
通过掌握上述方法,你可以有效地操作Python列表,完成各种数据处理任务。列表的灵活性和多功能性使其成为Python编程中不可或缺的工具。
18 1
|
2天前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
8 0
|
2天前
|
并行计算 Java API
写出高效率python的90个方法,附案例(python3经典编程案例)
该文章提供了90个提高Python编程效率的方法及案例,旨在帮助开发者编写更加高质量和优化的Python代码。
13 0