打印命令行参数时无额外输出

16 投票
2 回答
31173 浏览
提问于 2025-04-16 05:38

今天是我学习Python的第一天,所以对很多人来说这个问题可能很简单。看看下面的代码:

#!/usr/bin/env python

import sys

def hello(name):
    name = name + '!!!!'
    print 'hello', name

def main():
    print hello(sys.argv[1])


if __name__ == '__main__':
    main()

当我运行它的时候

$ ./Python-1.py alice
hello alice!!!!
None

现在,我有点搞不清楚这个"None"是从哪里来的?

2 个回答

6

把你的

def main():
    print hello(sys.argv[1])

改成

def main():
    hello(sys.argv[1])

你现在是直接打印了你 hello 方法的返回值。因为你没有指定返回值,所以它返回的是 None,这就是你在输出中看到的内容。

26

数一数你代码里有多少个 print 语句。你会发现,在 hello 函数里,你打印了 "hello alice!!!"而且还打印了 hello 函数的结果。因为 hello 函数没有返回任何值(如果要返回值的话,你需要用 return 语句),所以它最后返回的是一个叫 None 的东西。你在 main 函数里的 print 语句就打印出了 None

撰写回答