Python: return в методах

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()

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



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

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

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

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

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




Report Page