正如您所看到的,如果ifinner是一个字符串,那么如果我在if后面写任何内容,它都将为真。我该怎么办,才能将其转换为源代码?
x=2
ifinner = "x==3"
if ifinner:
print("Yeah")
else:
print("It works!")
你可以使用 eval()
函数来评估 Python 源代码。
引用文档:
eval(expression, globals=None, locals=None)
参数是一个字符串和可选的 globals 和 locals。如果提供了,全局变量必须是字典类型。如果提供了,locals 可以是任何映射对象。
eval
(或来自可信来源的字符串)! - MSeifert我认为eval不能处理这样的字符串
str_ = "import matplotlib"
exec
来执行这个字符串。例如,尝试以下代码:exec("import matplotlib.pyplot as mp"); mp.plot([1,2,3],[-1,0,1]); mp.show()
不会出现错误。但是你说的没错,eval
不适合执行这个字符串。 - AmirHosein Sadeghimanesh
ifinner = x == 3
呢? - Kevin