gpt4 book ai didi

Python 断言——改进了失败的自省(introspection)?

转载 作者:太空狗 更新时间:2023-10-29 17:39:14 28 4
gpt4 key购买 nike

这是一个相当无用的断言错误;它不会告诉所涉及的表达式的值(假设使用的常量实际上是变量名):

$ python -c "assert 6-(3*2)"
[...]
AssertionError

在 Python 中是否有更好的 assert 实现更花哨?它不得引入额外的执行开销(断言失败时除外)..并且如果使用 -O 标志则必须关闭。

编辑:我知道断言的第二个参数是一个字符串。我不想写一个 .. 因为它是在被断言的表达式中编码的。 DRY(不要重复自己)。

最佳答案

将您的函数安装为 sys.excepthook -- 参见 the docs .你的函数,如果第二个参数是AssertionError,可以反省你的内心;特别是,通过第三个参数,traceback,它可以获得断言失败的框架和确切位置,通过源代码或字节码获取失败的异常,所有相关变量的值等。模块inspect有帮助。

完全通用地完成它是一项相当大的工作,但是根据您在编写 assert 时愿意接受的限制,它可以大大减轻(例如,将它们限制为与可能涉及闭包的非局部变量等相比,只有局部或全局变量使自省(introspection)更容易。

关于Python 断言——改进了失败的自省(introspection)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1308607/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com