#python #return #nonetype
#python #Возврат #nonetype
Вопрос:
def where_is_waldo(names):
if "Waldo" in names:
return names.index("Waldo")
else:
return None
where_is_waldo(["Peter", "Waldo", "John"])
возвращает 1, но почему
where_is_waldo(["Peter", "John"])
не вернуть None
? Он просто ничего не возвращает…
Я знаю, что
print(where_is_waldo(["Peter", "John"]))
вернет None
, но мне любопытно, как это сделать без print
инструкции
Комментарии:
1. Возврат None отображается как возврат nothing с помощью REPL. То, что делает ваша печать, — это печать None , которая отличается от возврата None .
2. @CharlesDuffy да, следует отметить, что это функция, специально разработанная REPL
Ответ №1:
Он возвращает None.
def where_is_waldo(names):
if "Waldo" in names:
return names.index("Waldo")
else:
return None
listNames = ["Peter", "John"]
index = where_is_waldo(listNames)
if index is None:
print("Waldo is not present")
else:
print("Waldo is present at index ", index)
Вывод:
Waldo is not present
Обновление: Благодаря предложению Маттиаса о переходе index == None
на index is None
.
Ответ №2:
Когда вы возвращаетесь None
, буквально ничего не отображается из-за реализации __repr__
в None
объекте. Таким образом, вы не получите ничего для отображения.
Комментарии:
1. «буквально нет ничего для отображения» нет, не совсем. Это особенность REPL, но
print(None)
печатаетNone