Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python3exec,为什么不返回?_Python_Python 3.x_Return_Exec - Fatal编程技术网

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吗?