Python3 exec,为什么返回None?

Str*_*lok 0 python return exec python-3.x

当这段文字下面的代码,并返回结果 None 为什么?

with open('exx.py', 'rb') as file:
ff = compile(file.read(), 'exx.py', 'exec')
snip_run = exec(ff, locals())
if 'result' in locals():
    print(snip_run, result)
else:
    print(snip_run)
Run Code Online (Sandbox Code Playgroud)

结果:

777777
None
Run Code Online (Sandbox Code Playgroud)

模块代码 exx.py:

print('777777')
Run Code Online (Sandbox Code Playgroud)

Ant*_*ala 7

问题当然不仅仅是print返回None,而是exec总是返回 None

>>> exec('42') is None
True
Run Code Online (Sandbox Code Playgroud)

如果您需要返回值,您可以使用eval

>>> eval('42')
42
Run Code Online (Sandbox Code Playgroud)

之后你会注意到print仍然返回None......