为什么python不将输出发送到stdout?

jvr*_*sem -2 python stdout output python-3.5

这是一个最小工作示例(MWE),保存为mwe.py:

import sys

def f(n):
    print("Testing print()...")
    sys.stdout.write("Calculating f({})...".format(n))
Run Code Online (Sandbox Code Playgroud)

从命令行运行时,我得不到任何输出:

username@hostname:~/mydir$ python mwe.py 'f(99)'
username@hostname:~/mydir$ 
Run Code Online (Sandbox Code Playgroud)

从内部运行时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)...
>>>
Run Code Online (Sandbox Code Playgroud)

为什么这些输出语句在命令行内python不在命令行中?

use*_*ica 5

python mwe.py 'f(99)'并不意味着" fmwe.py参数运行函数99".如果您想从命令行执行此操作,则可以执行

python -c 'import mwe; mwe.f(99)'
Run Code Online (Sandbox Code Playgroud)

python mwe.py 'f(99)'表示" mwe.py使用sys.argv[1]set设置为字符串运行脚本"f(99)"".该脚本mwe.py根本不检查sys.argv或打印任何内容; 它只是定义一个函数并结束.