【问题标题】:Some way to evaluate and explain python expression (a la pytest)一些评估和解释 python 表达式的方法(la pytest)
【发布时间】:2022-12-11 07:07:31
【问题描述】:

我正在寻找一些可以像eval() 那样评估 python 表达式的方法或工具,但是当断言导致 False 时,像在 pytest 中那样额外解析变量。 是这样的:

result = smart_eval('4 == a - b', {'a': 10, 'b': 7})
print(result.result, result.explanation, sep='\n')

# False
# 4 == (10 - 7)

当然,评估的表达式可能要复杂得多,并且包含多个嵌套函数调用

也许这个功能可以以某种方式从测试

【问题讨论】:

  • 这篇文章似乎是off-topic要求我们推荐或寻找工具、图书馆或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。
  • @YevhenKuzmovych 这绝对与首选工具和意见无关。我正在寻找一种方法来完成问题中描述的确切编程任务。
  • 这是直接在the documentationglobalslocals

标签: python pytest


【解决方案1】:

查看文档显示 eval 采用 globals()locals() 映射参数。因此,这可以工作:

result = eval('4 == a - b', globals(), {'a': 10, 'b': 7})

(或使用 None 而不是 globals()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多