Python 调试方法

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 调试方法Python 调试方法

一、printhtml

print('here')
# 能够发现某段逻辑是否执行
# 打印出变量的内容
最简单 print()
只是影响代码美观,并且须要在后面删掉,比较麻烦python

断言
凡是用print来辅助查看的地方,均可以用断言(assert)来替代:linux


def main():
foo('0')# err.py
def foo(s):
n = int(s)
assert n != 0, 'n is zero!'
return 10 / n

二、assert工具

assert false, 'blabla'
# 若是条件不成立,则打印出 'blabla' 并抛出AssertionError异常
assert 语句的做用是:当条件表达式的值为真时,该语句什么也不作,程序正常运行;反之,若条件表达式的值为假,则 assert 会抛出 AssertionError 异常。其中,[,描述信息] 做为可选参数,用于对条件表达式可能产生的异常进行描述。debug

例如:
  1. s_age = input("请输入您的年龄:")
  2. age = int(s_age)
  3. assert 20 < age < 80 , "年龄不在 20-80 之间"
  4. print("您输入的年龄在20和80之间")

程序运行结果为:
请输入您的年龄:10调试

Traceback (most recent call last):
  File "C:\Users\mengma\Desktop\1.py", line 3, in 
    assert 20 < age < 80 , "年龄不在 20-80 之间"
AssertionError: 年龄不在 20-80 之间

经过运行结果能够看出,当 assert 中条件表达式的值为假时,程序将抛出异常,并附带异常的描述性信息,与此同时,程序当即中止执行。code

一般状况下,assert 能够和 try except 异常处理语句配合使用,之前面代码为例:htm

try:
    s_age = input("请输入您的年龄:")
    age = int(s_age)
    assert 20 < age < 80 , "年龄不在 20-80 之间"
    print("您输入的年龄在20和80之间")
except AssertionError as e:
    print("输入年龄不正确",e)

程序运行结果为:对象

请输入您的年龄:10
输入年龄不正确 年龄不在 20-80 之间

经过在程序的适当位置,使用 assert 语句判断变量或表达式的值,能够起到调试代码的做用。
当在命令行模式运行 Python 程序时,传入 -O(注意是大写)参数,能够禁用程序中包含的 assert 语句。blog

三、debugger

能够经过 pdb、IDE 等工具进行调试。

调试的具体方法这里不展开。

Python 中有两个内置方法在这里也颇有帮助:

locals: 执行 locals() 以后, 返回一个字典, 包含(current scope)当前范围下的局部变量。
globals: 执行 globals() 以后, 返回一个字典, 包含(current scope)当前范围下的全局变量。

本文原创地址:https://www.linuxprobe.com/python-debugging-methods.html

相关文章
相关标签/搜索