Python - 早期从exec返回

时间:2014-01-27 21:21:22

标签: python

我知道有些人认为Python的execeval函数是邪恶的。我不介意。我有不同的问题。假设我有一个存储在字符串中的脚本,我想使用函数exec(my_script_as_string)执行它。假设在脚本中的某个时刻,例如基于某些条件,我需要从该脚本返回。怎么做?命令return不是为了这个。函数quit()不仅退出exec()内的脚本,还退出调用exec的外部脚本。 sys.exit是一样的。那么......怎么做?甚至可能吗?

示例,不起作用:

print('A')
exec("print('B');quit();print('C')")
print('D')

我想要的输出是:

A
B
D

但它是

A
B

我知道脚本总是可以重新排列,以便有许多if / else子句可以消除提前退出的需要,但有时它会非常复杂,特别是当与循环结合时......

1 个答案:

答案 0 :(得分:3)

一种选择是在exec内创建一个随后调用的函数,这样就可以使用return,例如:

exec("""
def _f():
    print('B')
    return
    print('C')
_f()
""")