这是最小工作示例(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
但不?
答案 0 :(得分:5)
python mwe.py 'f(99)'
并不意味着“使用参数f
从mwe.py
运行99
函数”。如果您想从命令行执行此操作,则可以执行
python -c 'import mwe; mwe.f(99)'
python mwe.py 'f(99)'
表示“运行脚本mwe.py
并将sys.argv[1]
设置为字符串"f(99)"
”。脚本mwe.py
不会检查sys.argv
或打印任何内容;它只是定义一个函数并结束。
答案 1 :(得分:1)
这:python mwe.py 'f(99)'
不应该工作。在这种情况下,'f(99)'
只是作为参数传递给程序。
请尝试使用python -c 'import mwe; mwe.f(99)
。 (还可以通过键入python -h
)