if __name__ == "__main__":
code = compile("(var) and True", "", "eval")
var = "False or False"
exec code
print eval(code)
print eval("(False or False) and True")
大家好,上面这段代码运行的结果是
True
False
难道不是应该两次都为False才对吗?不明白为什么第一次在用eval计算时为True。
之前本来就是直接用eval来计算某个表达式的值的,后来发现效率比较低,就改为compile+eval的模式,下面这篇文章分析过这个问题。
http://lucumr.pocoo.org/2011/2/1/exec-in-python/