我有一个python3脚本,该脚本使用简单的assert语句来比较两个变量的值。
assert response['checksum'] == checksum
一个名为bandit的代码分析工具将其标记为不良做法,受到的保护较少。 https://bandit.readthedocs.io/en/latest/plugins/b101_assert_used.html
使用断言确实是不正确的做法,并且安全性较低吗?
答案 0 :(得分:1)
您在链接中自己给出了答案:
发现某些项目使用assert来实施接口约束。但是,通过编译为优化的字节码(python -o生成* .pyo文件)可以删除assert。
因此,如果一个库依靠assert
来执行某种验证,而我又将它与py2exe
或类似的工具一起使用,那么产生的代码很有可能会丢失断言< strong>和失败或跳过上述验证。这就是为什么您只应在测试代码等中使用assert
。