如果对exec的语句是表达式,则打印结果

时间:2017-03-08 23:45:40

标签: python exec

在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笔记本中执行单元格的行为。

1 个答案:

答案 0 :(得分:-1)

首先,执行10在现实生活中没有意义。你怎么能执行一个号码?但是,您可以执行exec("print(10)")之类的命令。我认为不需要创建my_exec函数。它的行为与普通exec相同。在交互式shell中,一切都有所不同,所以不要试图比较。基本上,exec("print(10)")是您正在寻找的命令。另一种不使用exec的方法是print(10)