【发布时间】:2018-02-10 00:03:23
【问题描述】:
这是一个最小工作示例 (MWE),保存为 mwe.py:
import sys
def f(n):
print("Testing print()...")
sys.stdout.write("Calculating f({})...".format(n))
从命令行运行时,我没有任何输出:
username@hostname:~/mydir$ python mwe.py 'f(99)'
username@hostname:~/mydir$
从python 内部运行时
我得到输出(删除了一些信息):
username@hostname:~/mydir$ python
Python 3.5.4 (default, DATE, HH:MM:SS)
[GCC X.X.X Compatible Apple LLVM X.X.X (clang-X.X.X)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from mwe import f
>>> f(99)
Testing print()...
Calculating f(99)...
>>>
为什么这些输出语句可以在python 中工作,而不能 在命令行中工作?
【问题讨论】:
-
当您运行
python mwe.py 'f(99)'时,您将f(99)作为参数传递给Python。该参数不会针对源文件执行。只执行源文件,它从不调用函数。 -
出于好奇,为什么投反对票并投票结束?问的问题,回答的问题。从上下文中可以清楚地看到所问的内容。当然,这是一个很容易修复的小错误,但我确信我不是唯一遇到或将遇到此问题的 Python 用户。仅出于这个原因,保留这个问题可能是值得的。
标签: python output stdout python-3.5