在python中,如果我exec
一个打印一个值的语句,我会看到输出,例如exec("print 10")
给我输出10.然而,如果我做exec("10")
我得到了没有什么作为输出,就像我在交互式shell中键入10我得到10作为输出。使用exec
时如何获得此输出?也就是说,如果要执行的语句是表达式,我打印它的结果。
我的问题是如何判断要执行的语句是否为表达式。我应该做以下事情:
def my_exec(script):
try:
print eval(compile(script, '<string>', 'eval'))
except SyntaxError:
exec(script)
# Prints 10.
my_exec("print(10)")
# Prints 10 as well.
my_exec("10")
更新:
基本上我想要在jupyter笔记本中执行单元格的行为。
答案 0 :(得分:-1)
首先,执行10在现实生活中没有意义。你怎么能执行一个号码?但是,您可以执行exec("print(10)")
之类的命令。我认为不需要创建my_exec
函数。它的行为与普通exec
相同。在交互式shell中,一切都有所不同,所以不要试图比较。基本上,exec("print(10)")
是您正在寻找的命令。另一种不使用exec的方法是print(10)
。