О действительном поведении нет никакой разницы. Все они возвращаются None
, и все. Тем не менее, есть время и место для всех этих. Следующие инструкции в основном касаются того, как следует использовать различные методы (или, по крайней мере, как меня учили, они должны использоваться), но они не являются абсолютными правилами, поэтому вы можете смешивать их, если вам необходимо.
return None
Это говорит о том, что функция действительно предназначена для возврата значения для последующего использования, и в этом случае она возвращает None
. Это значение None
можно затем использовать в другом месте. return None
никогда не используется, если из функции нет других возможных возвращаемых значений.
В следующем примере мы возвращаем person
's mother
, если указанный person
является человеком. Если это не человек, мы возвращаемся None
, так как person
не имеет mother
(предположим, что это не животное или так).
def get_mother(person):
if is_human(person):
return person.mother
else:
return None
return
Используется по той же причине, что и break
в циклах. Возвращаемое значение не имеет значения, и вы хотите только выйти из всей функции. Это очень полезно в некоторых местах, даже если вам это не нужно часто.
У нас получилось 15 prisoners
, и мы знаем, что у одного из них есть нож. Мы каждую секунду прокручиваем каждый prisoner
, чтобы проверить, есть ли у них нож. Если мы ударим человека ножом, мы можем просто выйти из функции, потому что мы знаем, что есть только один нож и нет причины для проверки остальной части prisoners
. Если мы не найдем prisoner
с ножом, мы поднимем предупреждение. Это можно сделать разными способами, и использование return
, вероятно, даже не лучший способ, но это просто пример, показывающий, как использовать return
для выхода из функции.
def find_prisoner_with_knife(prisoners):
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition()
return # no need to check rest of the prisoners nor raise an alert
raise_alert()
Примечание. : Вы никогда не должны делать var = find_prisoner_with_knife()
, так как возвращаемое значение не предназначено для захвата.
return
вообще Это также вернет None
, но это значение не предназначено для использования или поймания. Это просто означает, что функция успешно завершилась. Это в основном то же, что и return
в функциях void
в таких языках, как C ++ или Java.
В следующем примере мы указываем имя матери, а затем функция завершается после успешного завершения.
def set_mother(person, mother):
if is_human(person):
person.mother = mother
Примечание: вы никогда не должны делать var = set_mother(my_person, my_mother)
, так как возвращаемое значение не предназначено для улавливания.