Python: return в методах

В чем разница между методом класса, который содержит return, и в котором return не содержится? Например:

class SomeClass():

    def __init__(self, name, level):
        ...
        self.level = level

    def levelUp(self, level_plus):
        self.level = self.level + level_plus
        return self.level

    def info(self):
        print("Name is: ", self.name)
        print("Level is: ", self.level)

rSomeClass = SomeClass("Red", 34)
rSomeClass.levelUp(14)
rSomeClass.info()

и

class SomeClass():

    def __init__(self, name, level):
        ...
        self.level = level

    def levelUp(self, level_plus):
        self.level = self.level + level_plus

    def info(self):
        print("Name is: ", self.name)
        print("Level is: ", self.level)

rSomeClass = SomeClass("Green", 16)
rSomeClass.levelUp(32)
rSomeClass.info()

В обоих примерах кода переменная экземпляра изменила свое значение. Но есть ли неочевидные отличия между ними? Заранее спасибо.


Ответы (2 шт):

Автор решения: Alpensin

Return есть у любой функции. Просто если он явно не задан, то возвращается None. А так вы можете возвращать нужные вам значения. Других отличий нет.

→ Ссылка
Автор решения: dresqd

Отличие в том, что в одном случае в результате выполнения функции возвращается значение, которое можно использовать в коде. В случае, когда функция не содержит return - она возвращает None по умолчанию.

У вас функция levelUp может быть использована так:

print('Поздравляем с получением уровня', rSomeClass.levelUp(32))  # такое невозможно без использования return

В одну строку и уровень увеличили, и текущий уровень смогли отобразить.

Грамотное использованиеreturn позволяет банально уменьшить количество кода.

→ Ссылка