Python EVAL() - AND statements



我正在尝试使用 EVAL() 同时评估两个语句,但我遇到了一些问题:

metrics_dict = {}
def testA(n):
print ("testA done")
global metrics_dict
result = n**n
metrics_dict["metricA"] = result
return result
def testB(n):
print ("testB done")
global metrics_dict
result = n**n
metrics_dict["metricB"] = result
return result
def testC(n):
print ("testC done")
global metrics_dict
result = n**n
metrics_dict["metricC"] = result
return result
logic = "testA(2) > 10 and testB(3) > 0"

如果我在"逻辑"上运行评估,如下所示:

x = eval(logic)

我得到了"testA"和FALSE,我相信发生这种情况是因为由于testA是FALSE,EVAL()不会继续对testB进行第二次检查,此外我的metrics_dict只有metricA,所以我的问题是,有没有办法强制eval检查我的逻辑语句中的所有检查, 我需要能够一直检查和记录两个测试,

无论是假的、假的还是假的、真的还是真的、假的还是真的、真的都没关系。谢谢所有

与其弄乱eval,你将无法回避AND逻辑上的工作方式,不如考虑将检查逻辑编码为独立语句的集合:

>>> logic = [testA(2) > 10, testB(3) > 0]
testA done
testB done
>>> logic
[False, True]

然后你仍然可以通过all(logic)或其他一些这样的减少来获得最终结果。

最新更新