python eval()中的有效语句是什么?

python eval()中的有效语句是什么?,python,eval,Python,Eval,我试过了 eval('print("hello world")') eval('return 0') 两者都是错误的。为什么它们无效?在使用eval()时,我应该遵循哪些规则(除了尽可能少的规则)?在Python中,eval()计算表达式(产生值的东西)。print和return都定义为语句(但是在Python 3中,print实际上是一个函数调用,它是一个表达式)。在执行语句的情况下,需要改用。eval()用于将变量的值作为变量进行求值。 例如: var="Hello World!" cod

我试过了

eval('print("hello world")')
eval('return 0')
两者都是错误的。为什么它们无效?在使用
eval()
时,我应该遵循哪些规则(除了尽可能少的规则)?

在Python中,
eval()
计算表达式(产生值的东西)。
print
return
都定义为语句(但是在Python 3中,
print
实际上是一个函数调用,它是一个表达式)。在执行语句的情况下,需要改用。

eval()用于将变量的值作为变量进行求值。

例如:

var="Hello World!"
code="var"
print eval(code)
输出应为:

Hello World!

前者适用于Python3.x,在Python2.x中“使用打印的方式可能是错误的”。如果我在except块中使用exec('return 0'),它将作为SyntaxError报告,即使它在函数内部,也会在函数外部报告:“return”。为什么?因为在
exec
中没有函数(代码在不同的执行上下文中运行,就好像它是从自己单独的源文件加载的一样)。不可能直接导致调用方返回(就像函数
f()
调用
g()
,然后调用
g())
执行某种导致
f()
返回值的操作)。您可以使用
eval()
运行一些外部代码,然后根据
eval()
返回的值,您可以决定
是否从函数返回一些内容。