zoukankan      html  css  js  c++  java
  • Python学习笔记调试之断言

    随笔记录方便自己和同路人查阅。

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      “断言”是一个心智正常的检查,确保代码没有做什么明显错误的事情。这些心智正常的检查有assert语句执行。如果检查失败,就会抛出异常。

      assert语句包含以下部分:

      (1)assert关键字

      (2)条件(求值为Truehuo False的表达式)

      (3)逗号

      (4)当条件为False时显示的字符串

    #------------------------------------------------我是可耻的分割线-------------------------------------------

      1、示例代码:

    #! python 3
    # -*- coding:utf-8 -*-
    # Autor: Li Rong Yang
    podBayDoorStatus = "open"
    assert podBayDoorStatus == "open",'The pod bay doors need to be"open".'
    podBayDoorStatus = "Im sorry, Dave. I'm afraid I can't do that."
    assert  podBayDoorStatus == "open",'The pod bay doors need to be"open".'
    

      运行结果:

      这里将 podBayDoorStatus 设置为 'open',所以从此以后,我们充分期望这个变量的值是 'open'。在使用这个变量的程序中,基于这个值是 'open' 的假定,我们可能写下了大量的代码,即这些代码依赖于它是 'open',

    才能按照期望工作。所以添加了一个断言,确保假定 podBayDoorStatus 是 'open' 是对的。这里,我们加入了信息 'Thepod bay doors need to be "open".',这样如果断言失败,就很容易看到哪里出了错。

      稍后,假如我们犯了一个明显的错误,把另外的值赋给 podBayDoorStatus,但在很多行代码中,我们并没有意识到这一点。这个断言会抓住这个错误,清楚地告诉我们出了什么错。

      在日常英语中,assert 语句是说:“我断言这个条件为真,如果不为真,程序中什么地方就有一个缺陷。”不像异常,代码不应该用 try 和 except 处理 assert 语句。如果assert 失败,程序就应该崩溃。通过这样的快速失败,

    产生缺陷和你第一次注意到该缺陷之间的时间就缩短了。这将减少为了寻找导致该缺陷的代码,而需要检查的代码量。

      断言针对的是程序员的错误,而不是用户的错误。对于那些可以恢复的错误(诸如文件没有找到,或用户输入了无效的数据),请抛出异常,而不是用assert 语句检测它。

      2、写一条 assert 语句,如果变量 spam 是一个小于 10 的整数,就触发188 Python 编程快速上手——让繁琐工作自动化AssertionError

    #! python 3
    # -*- coding:utf-8 -*-
    # Autor: Li Rong Yang
    def spam(n):
        #number赋值
        number =10
        #断言传入的参数要小于等于10
        assert number >= n, 'This is greater than 10'
    
    spam(11)
    

      运行结果:

  • 相关阅读:
    git merge 和 git rebase 的使用场景
    Xcode 报错:解决 Could not attach to pid : "xx" 不重开工程的杀手锏
    软件设计模式的7条原则
    iOS开发信号量的使用
    利用SAMKeyChain生成唯一设备号
    iOS Fundation和CoreFoundation的对象转换内存管理权问题
    已有的PHP安装gd扩展
    centos7 编译安装 php7.4
    Nacos集群模式部署步骤
    搭建 Apache RocketMQ 单机环境
  • 原文地址:https://www.cnblogs.com/lirongyang/p/9683426.html
Copyright © 2011-2022 走看看