Дополнительный вывод отсутствует при печати аргумента командной строки
Это мой день 1 обучения python. поэтому для многих из вас это вопрос noob. См. Следующий код:
#!/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"
?
Ответы
Ответ 1
Подсчитайте количество операторов print
в вашем коде. Вы увидите, что вы печатаете "hello alice!!!"
в функции hello
и печатаете результат функции hello
. Поскольку функция hello
не возвращает значение (которое вы делаете с оператором return
), оно возвращает объект None
. Ваш print
внутри функции main
завершает печать None
.
Ответ 2
Измените
def main():
print hello(sys.argv[1])
to
def main():
hello(sys.argv[1])
Вы явно печатаете возвращаемое значение из вашего метода hello. Поскольку у вас нет указанного значения возвращаемого значения, он возвращает None
, что вы видите на выходе.