python的调试;print()和断言(实例解析二)


本文摘自php中文网,作者乌拉乌拉~,侵删。

在以下的文章之中我们来了解一下python中的调试。了解一些什么python调试的方法,以及知晓python调试在python编程之中能起到什么样的作用。

为什么要进行调试

程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。那么python怎么调试呢?下面将会给与解答。

第一种方法简单直接粗暴有效,就是用print()把可能有问题的变量打印出来看看:

1

2

3

4

5

6

7

def foo(s):

    n = int(s)

    print('>>> n = %d' % n)

    return 10 / n

def main():

    foo('0')

main()

执行后在输出中查找打印的变量值:

1

2

3

4

5

$ python err.py

>>> n = 0

Traceback (most recent call last):

  ...

ZeroDivisionError: integer division or modulo by zero

用print()最大的坏处是将来还得删掉它,想想程序里到处都是print(),运行结果也会包含很多垃圾信息。所以,我们又有第二种方法。

第二种方法就是:凡是用print()来辅助查看的地方,都可以用断言(assert)来替代:

1

2

3

4

5

6

7

def foo(s):

    n = int(s)  

     assert n != 0, 'n is zero!'

    return 10 / n

     

    def main():

    foo('0')

assert的意思是,表达式n != 0应该是True,否则,根据程序运行的逻辑,后面的代码肯定会出错。

如果断言失败,assert语句本身就会抛出AssertionError:

1

2

3

4

$ python err.py

Traceback (most recent call last):

  ...

AssertionError: n is zero!

程序中如果到处充斥着assert,和print()相比也好不到哪去。不过,启动Python解释器时可以用-O参数来关闭assert:

1

2

3

4

$ python -O err.py

Traceback (most recent call last):

  ...

ZeroDivisionError: division by zero

关闭后,你可以把所有的assert语句当成pass来看。

以上就是本篇文章所讲述的所有内容,这篇文章主要介绍了python调试的相关知识,希望你能借助资料从而理解上述所说的内容。希望我在这片文章所讲述的内容能够对你有所帮助,让你学习python更加轻松。

更多相关知识,请访问php中文网Python教程栏目。

以上就是python的调试;print()和断言(实例解析二)的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

idle和Python区别

Python怎么看数据类型

基于Python 装饰器装饰类中的方法

详解Python urllib2用法

Python线程下queue(队列)模块的用法(附实例)

__init__ 在 Python 中的用法

Python中raise 与 raise ... from之间有何区别?

Python网络编程哪个模块最好?举例Python模块详解

Python怎么念

嵌入式软件和Python有关吗

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...