当前位置:  开发笔记 > 编程语言 > 正文

断言没有Python中的回溯

如何解决《断言没有Python中的回溯》经验,为你挑选了1个好方法。

我正在尝试简化以下内容:

if x < 0:
  print('we don't do negative numbers')
else: 
  NORMAL CODE HERE

我最近了解了这个assert命令,并且钦佩它将我之前的行简化为:

assert x > 0, 'errorText'
NORMAL CODE HERE

不过,我不希望错误给予追溯.我只想要像if/else那样的单行.

有没有办法让assertionError像异常那样返回单行,或者我是否真的需要继续运行if/else的处处?



1> Noah..:

assertPython中的语句用于调试或测试.当条件不是时,它用于停止执行程序True.调试时,您可以在代码中包含这些语句,以帮助跟踪错误.一旦修复了bug,就删除它们.assert在生产代码中使用是个坏主意.

正如您使用它编写的那样assert,如果x小于零并且后面的代码不会运行,程序将终止.

您应该继续使用if/else方法来提供两个所需的代码路径.记录x小于零的一条路径,执行块代码的另一条路径正常代码在这里.

如果x此时永远不应该小于0,并且不能执行剩余的代码,那么你应该引发一个可以在调用代码中捕获的异常.

def method_using_positive_numbers(x):
    if x < 0:
        raise ValueError("we don't do negative numbers")
    NORMAL CODE HERE

另一种选择是如果条件不为真,则从方法返回.

def method_using_positive_numbers(x):
    if x < 0:
        print("we don't do negative numbers")
        return
    NORMAL CODE HERE

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有