栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中禁用断言

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中禁用断言

如何在Python中禁用断言?

有多种方法会影响单个流程,环境或一行代码。

我演示每个。

对于整个过程

使用

-O
标志(大写O)将禁用进程中的所有断言语句。

例如:

$ python -Oc "assert False"$ python -c "assert False"Traceback (most recent call last):  File "<string>", line 1, in <module>AssertionError

请注意,通过禁用,我的意思是它也不执行其后的表达式:

$ python -Oc "assert 1/0"$ python -c "assert 1/0"Traceback (most recent call last):  File "<string>", line 1, in <module>ZeroDivisionError: integer division or modulo by zero

为了环境

您也可以使用环境变量来设置此标志。

这将影响使用或继承环境的每个进程。

例如,在Windows中,设置然后清除环境变量:

C:>python -c "assert False"Traceback (most recent call last):  File "<string>", line 1, in <module>AssertionErrorC:>SET PYTHonOPTIMIZE=TRUEC:>python -c "assert False"C:>SET PYTHonOPTIMIZE=C:>python -c "assert False"Traceback (most recent call last):  File "<string>", line 1, in <module>AssertionError

在Unix中相同(对相应功能使用set和unset)

单点代码

您继续您的问题:

如果断言失败,我不希望它引发AssertionError,而是继续前进。

如果希望执行失败的代码,则可以捕获确保控制流未到达断言的任何一种,例如:

if False:    assert False, "we know this fails, but we don't get here"

或者您可以捕获断言错误:

try:    assert False, "this pre runs, fails, and the exception is caught"except AssertionError as e:    print(repr(e))

打印:

AssertionError('this pre runs, fails, and the exception is caught')

并且您将继续从处理问题的角度出发

AssertionError

参考文献

从该

assert
文档:

如下的断言语句:

assert expression #, optional_message

相当于

if __debug__:    if not expression: raise AssertionError #(optional_message)

和,

内置变量

__debug__
通常
True
False
要求优化的情况下使用(命令行选项
-O
)。

并进一步

转让给

__debug__
是非法的。内置变量的值在解释器启动时确定。

从用法文档中:

-O

打开基本优化。这会将已编译(字节码)文件的文件扩展名从.pyc更改为.pyo。另请参阅PYTHONOPTIMIZE。

PYTHONOPTIMIZE

如果将其设置为非空字符串,则等效于指定

-O
选项。如果设置为整数,则等效于
-O
多次指定。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611582.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号