正确。除非指定上下文,否则不能在具有子功能的函数中使用exec。从文档:
如果在函数中使用exec并且该函数包含带有自由变量的嵌套块,则除非exec显式指定exec的本地名称空间,否则编译器将引发SyntaxError。(换句话说,“
exec obj”将是非法的,但是“ ns中的exec obj”将是合法的。)
有充分的理由,如果不是星期天晚上,我可能会明白。现在,下一个问题:为什么要使用exec?很少需要它。你说你有充分的理由。我对此表示怀疑。;)如果您有充分的理由,我会告诉您解决方法。:-P
哦,好吧,这里仍然是:
def test2(): """Test with a subfunction.""" exec 'print "hi from test2"' in globals(), locals() def subfunction(): return True
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)