python3exec,为什么不返回?
当下面的代码显示此文本时,返回的结果为无为什么python3exec,为什么不返回?,python,python-3.x,return,exec,Python,Python 3.x,Return,Exec,当下面的代码显示此文本时,返回的结果为无为什么 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) 结果: 777777 None 模块代码exx.py: print('7
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)
结果:
777777
None
模块代码exx.py:
print('777777')
“打印”始终返回“无”
此外,这不是您应该如何执行来自另一个模块的代码。这就是导入的目的。打印始终不返回任何内容
此外,这不是您应该如何执行来自另一个模块的代码。这就是导入的目的。谢谢大家,决定如下:
import sys
from io import StringIO
from contextlib import contextmanager
@contextmanager
def stdoutIO(stdout=None):
old = sys.stdout
if stdout is None:
stdout = StringIO()
sys.stdout = stdout
yield stdout
sys.stdout = old
with stdoutIO() as s:
with open('exx.py', 'rb') as file:
ff = compile(file.read(), 'exx.py', 'exec')
exec(ff, locals())
if 'result' in locals():
sys.stdout.write(locals().get('result'))
print(s.getvalue())
谢谢大家,决定如下:
import sys
from io import StringIO
from contextlib import contextmanager
@contextmanager
def stdoutIO(stdout=None):
old = sys.stdout
if stdout is None:
stdout = StringIO()
sys.stdout = stdout
yield stdout
sys.stdout = old
with stdoutIO() as s:
with open('exx.py', 'rb') as file:
ff = compile(file.read(), 'exx.py', 'exec')
exec(ff, locals())
if 'result' in locals():
sys.stdout.write(locals().get('result'))
print(s.getvalue())
当然,问题不仅在于
print
返回None
,而且始终如此
如果需要返回值,可以使用eval
:
>>> eval('42')
42
在此之后,您会注意到,
print
仍然返回None
。当然,问题不仅在于print
返回None
,而且始终如此
如果需要返回值,可以使用eval
:
>>> eval('42')
42
在此之后,您会注意到,
print
仍然返回None
。尝试打印(print('777777'))None
,而不是。。。什么?你在期待什么?目前,这甚至不是有效的语法。返回相同的内容:print(exec(open('exx.py').read())Try print(print('777777'))None
,而不是。。。什么?你在期待什么?就目前而言,这甚至不是有效的语法。返回相同的内容:print(exec(open('exx.py').read()))谢谢您的帮助您可以使打印()不返回无?感谢您提供您想要的内容!)您可以使print()不返回None吗?