首页 体育世界正文

美图秀秀,Python 调试冷常识,靳怎么读

作者 | 喵叔

责编 抖音成人| 刘静

出品 | CSDN(ID:CSDNnews)

关于 python 代码的调试咱们一般都是运用 IDE 自带的调试功用。可是 IDE 供给的调试功用存在局限性,例如在测验服务器上调试代码,可是又不可能在测验服务器上装置 IDE地铁歪头美人 进行调试。这时咱们就能够运用下面所解说的三个东西进行调试。

零、预备调试代码

在解说三个调试东西前,咱们先编写待调试的代码。代码很简单,便是核算两个数的商。咱们在编写代码的时分成心留下了除数为 0 的 bug。

def division(start, end):
for i in range(start, end, -1):
num1 = i
num2 = i - 1
result = num1 / num2
print(result)

if __name__ 屠戮教室== '__main__':
division(10, 0)

PySnooper

PySnooper 是 Python 的第三方东西库,它能够准确的显现代码的履行时刻、履行次序和代码中的部分变量值的改动等。PySnooper 运用办法很简单,只需求将它作为装修器来运用即可。下面咱们来看一下详细运用过程:

1. 装置 PySnooper

在控制台输入如下指令:

pi周连悦p install pysnooper

等候两秒钟后 PySnooper 装置完结。

2. 参加 PySnooper

  • 首要需求引进 PySnooper

import pysnooper

  • 接着在需求测验的函数上加上 pysnooper 装美图秀秀,Python 调试冷知识,靳怎样读饰器

@pysnooper.snoop
def division(start, end):
for i in range(start, end, -1):
num1 = i
num2 = i - 1
result = num1 / num2
print(result)


if __name__ == '__main__':
division(10, 0)

3. 调试代码

在控制台输入指令:

python text.py

运转代码后,控制台输出如下内容

上图只截取了 PySnoope佟丽娅性感r 输出日志的最初内容和最终结束的内容。从截图中咱们能够看到 PySnooper美图秀秀,Python 调试冷知识,靳怎样读 输出了每行代码的运转次序、运转时刻和代码运转中变量值的改动,以及报错信息。在实践项目中 PySnooper 输出警官叔叔太凶狠的日文h志内容会许多,在控制台检查会很不便利,这时咱们能够将日志输出东方微尘到本地文件中,咱们只需在 PySnooper 装修器中参加日志保存途径即可:

@pysnooper.snoop('/app/project_log.log')

一些公司对日志输出会有要求,比方每行日志要以某某字符串最初,这时只需在装修器中参加需求字符穿即美图秀秀,Python 调试冷知识,靳怎样读可:

@pysnooper.snoop(prefix='MyCompanyName: ')

上述所讲的都是 PySnooper 装修器的常用参数,例如监控自定义表达式、监控底层函数、多线程等 PySnooper 相同支撑,详细参数能够在官方项目文档中检查。

前面咱们所讲的都是在函数上运用装修器来监控整个函数,可是在实践项目中往往一个函数内容会许多,假如监控整个函数会导致输出的日志过多,这时咱们就能够运用 PySnooper 的部分监控功用来监控函数中需求监控的代码片段。现在咱们来修正一下代码,只监控输出的值:

import pysnooper

def division(start, end):
for i i空中飞人打一字n range(start, end, -1):
with pysnooper.snoop:
num1 = i
num2 = i - 1
result = num1 mantiz/ num2
print(result)


if __name__ == '__main__':
division(10, 0)

上述代码运转后咱们就会发现输出的内容少了许多。

Better-exceptions

Better-exceptions 相同是 Python 的第三方东西库,它呈现的原因是其实很简单便是“美化反常信息”(是不是感觉作者很固执)。Better-exceptions 首要运用了 Python 的 sys 模块的 excepthook 办法,这个办法在当体系抛出反常时,解说器就会调用它,一起传递三个参数:反常类、反常美图秀秀,Python 调试冷知识,靳怎样读实例和 traceback 目标,这就阐明咱们能够重写这个办法来捕获体系反常。可是,由于咱们能够重写 excepthook 办法来捕获体系反常,因而 Better-exceptions 对与 W金度完eb 结构来说是不起任何效果的,由于 Web 结构都现已处理了体系抛出的反常,不会再以 hook 的办法触发 Better-exceptions 。下面咱们就来看一下该怎样用。

  1. 装置 Better-exceptijalalsons

  • 首要在控制台输入如下指令:

pip install better-e美图秀秀,Python 调试冷知识,靳怎样读xceptions

等候两秒钟后 B美图秀秀,Python 调试冷知识,靳怎样读etter-exceptions 装置完结。

  • 接着咱们在控制台输入如下代码,来设置环境变量:

setx BETTER_EXCEPTIONS 1
  1. 调试代码

    在控制台输入指令:

python text.py

代码运转后,控制台输出如下图:

从上面的图咱们能够看到,Better-exceptions 对反常代码进行了上色,并对发生反常的变量值进行了输出。经过这两项内容咱们就能够很方便的看到详细报错方位和报错原因。这儿有需求留意美图秀秀,Python 调试冷知识,靳怎样读的地便利是,在 Windows 体系下输出的日志会存在乱码问题,这是由于 Better-exceptions 的编码格局形成的。要处理这个问题咱们只需求修正 better-exceptions 目录下的 encoding.py 文件,讲文件中的 ENCODING = local王觉彬e.getpreferredencoding 修正为 ENCODING = '写真女utf-8'即可。

PDB

PDB 是 Python 内置的模块,咱们能够运用 PDB 设置断点和盯梢调试。PDB 的运用不需求再装置第三方插件,只需求在指令行输入如下指令:

python -m pdb Test.py

指令履行后将会进入 PDB 调试形式。假如需求在代码中参加断点,只需求在需求参加断点的方位参加 pdb.set_trace 即可。当进入到 PDB 形式后,输入 c 就能够从当时断点直接跳转到下一个断点,假如后续没有断点,则会将剩下代码履行完。当然,假如需求单步执刑讯室行代码,在控制台输入 s 指令,可是有时主函数会调用很多的其他函数,这时在指令行输入 n 就能够只在主函数中履行单步调试。除了上述指令外,PDB 还有其他指令,如下表:

总结

咱们解说了 PySnooper 、Better-exceptions 和 PDB 的用法,这三种办法一般都运用在服务器上,这儿我引荐运用Better-exceptions,由于它对代码的侵入性很小,简直不需求改动代码。

作者简介:朱钢,易凤娇笔名喵叔,CSDN博客专新泰数字电影院家,.NET高档开发工程师,7年一线开发经历,参加过电子和妈妈啪啪啪政务体系和AI客服体系的开发,以及互联网招聘网站的架构规划,现在上任于北方晓日京恒创融慧科技发展有限公司,从事企业级安全监控体系的开发。

声明:本文系作者独立观念,不代表CSDN态度。

【END】

☞BTC 固定的货币政策,真的无懈可击吗?

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。