Функции в python, что может быть проще? Хочешь - возвращай значение, не хочешь - не возвращай, можно задавать любые сложные параметры и никто ругаться не будет. Но так ли это? На самом деле только отчасти. Не секрет что в функции можно задать стандартное значение для любого аргумента, тогда если при вызове функции этот аргумент не передать, то его значением станет значение по умолчанию. Например напишем функцию по извлечению корня из числа: По стандарту мы будем извлекать квадратный корень из числа...
Для начала о том, зачем вообще нужна конструкция return self. Обычно её используют, чтобы сделать возможным так называемый chaining, то есть код вида my_object.method().another_method().do_something(). Но, как мы видим из заголовка статьи, в стандартной библиотеке Python это не используется. Точнее, используется, но не всегда. Для меня этот факт выглядит вполне естественным, хотя я никогда не думал о причинах. А вот тех, кто больше привык с другим языкам программирования, это подбешивает. И все же, почему в Python разрешено делать line = line.strip().lower(), а line.reverse().sort() нельзя? Оказалось у Гвидо есть письмо на этот счет: мутирующие методы должны возвращать None...