编程 2

你实在会正确使用断言吗,Python断言assert的用法代码分析

By admin in 编程 on 2019年6月4日

在支付七个顺序时候,与其让它运维时崩溃,不比在它出现错误条件时就夭亡(再次回到错误)。那时候断言assert
就呈现相当有效。

Python断言assert的用法代码分析,pythonassert

在支付五个顺序时候,与其让它运维时崩溃,比不上在它出现错误条件时就夭亡(重返错误)。这时候断言assert
就显示10分管用。

python
assert断言是宣称布尔值必须为实在剖断,假使发生非常就注脚表明式为假。

编程,能够驾驭assert断言语句为raise-if-not,用来测试表示式,其重回值为假,就能够接触极度。

assert的语法格式:

assert expression

它的等价语句为:

if not expression:
  raise AssertionError

这段代码用来检查评定数据类型的断言,因为 a_str 是 str 类型,所以感觉它是
int 类型肯定会抓住错误。

>>> a_str = 'this is a string'
>>> type(a_str)
<type 'str'>
>>> assert type(a_str)== str
>>> assert type(a_str)== int

Traceback (most recent call last):
 File "<pyshell#41>", line 1, in <module>
  assert type(a_str)== int
AssertionError

编程 1

python
assert断言是声称布尔值必须为真正剖断,若是爆发非常就印证表明式为假。

总结

如上就是本文关于Python断言assert的用法代码分析的全体内容,希望对大家享有帮忙。感兴趣的对象能够承袭参照本站其他有关专项论题,如有不足之处,应接留言建议。感激朋友们对本站的支撑!

在支付2个顺序时候,与其让它运维时崩溃,比不上在它出现错误条件时就夭亡(再次来到错误)。那时…

预感是当做1种调节和测试工具被发明出来的,用来检查那个“代码写对了就决然创建”的标准化。比方大家要断言四个变量a必须求高于二,就足以这么写:

能够知道assert断言语句为raise-if-not,用来测试表示式,其再次来到值为假,就能够接触卓殊。

assert a > 2

assert的语法格式:

当规则不满意时,就能够抛出AssertionError异常,等同于如下代码:

assert expression
if not assert_condition: raise AssertionError

它的等价语句为:

鉴于断言是七个debug工具,Python的贯彻也合乎那些企划教育学,在Python中assert语句的实行是依赖于__debug__变量的,当__debug__为true时,assert语句才会被试行。

if not expression:
  raise AssertionError
if __debug__ and not assert_condition: raise AssertionError

这段代码用来检查评定数据类型的预感,因为 a_str 是 str 类型,所以认为它是
int 类型分明会吸引错误。

私下认可情状下,当大家执行一个Python文件时,__debug__是会被装置为True的,唯有加参数-O或-OO时,__debug__才会被安装为False。

>>> a_str = 'this is a string'
>>> type(a_str)
<type 'str'>
>>> assert type(a_str)== str
>>> assert type(a_str)== int

Traceback (most recent call last):
 File "<pyshell#41>", line 1, in <module>
  assert type(a_str)== int
AssertionError

新建二个assert.py文件,写下如下代码:

总结

如上正是本文关于Python断言assert的用法代码解析的全体内容,希望对大家有着扶助。感兴趣的恋人能够继续参照本站其余有关专项论题,如有不足之处,迎接留言提出。多谢朋友们对本站的扶助!

print(__debug__)assert 2 > 5

您恐怕感兴趣的稿子:

  • Python中断言Assertion的局地更上一层楼方案
  • 剖判在Python中何种境况下必要动用断言

当使用python assert.py运行时,__debug__会输出True,assert 贰 >
伍语句会抛出AssertionError至极。

当使用python -O assert.py运行时,__debug__会输出False,assert 贰 >
伍语句由于尚未进行不会报任何非凡。

咱俩想想这多少个难题:断言应该用在怎样情境下?非凡和断言的差别是怎么样?

用一句话来总结断言的施用情形和与极其的差别:

检查先验条件使用断言,检查后验条件使用特别

我们定义3个read_file函数:

def read_file(file_path): pass

read_file函数要求在上马奉行的时候满意一定原则:file_path必须是str类型,这几个规则就是先验条件,若是不满意,就无法调用那个函数,假若的确出现了不满足条件的情景,注明朝码中冒出了bug,那时候大家就能够运用assert语句来对file_path的连串举行测算,提示程序猿修改代码,那样的估摸在生育条件中是不供给的,也得以利用if

  • raise语句来落到实处assert,可是要麻烦许多。

    def read_file(file_path): assert is_instance(file_path, str)

read_file函数在被调用实施后,照旧亟待满意一定条件,比如file_path所钦赐的文件需若是存在的,并且当前用户有权力读取该公文,那些规范称为后验条件,对于后验条件的反省,我们须要选取拾贰分来管理。

def read_file(file_path): assert is_instance(file_path, str) if not check_exist(file_path): raise NotFoundError() if not has_privilege(file_path): raise PermissionError()

文件不设有和尚未权限,那三种境况并不属于代码bug,是代码逻辑的壹有些,上层代码捕获非凡后大概会实行此外逻辑,由此大家无法经受那部分代码在生养条件中被忽略。并且,相比于assert语句只可以抛出AssertionError,使用非常能够抛出更全面包车型大巴荒谬,方便上层代码针对差异错误实施不一的逻辑。

编程 2

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2020 澳门新葡亰官网app 版权所有