Как стать автором
Обновить

Комментарии 7

Когда автор рассуждает об умном, а в качестве примера выдаёт такое
print(str1+" "+str2)
— он выглядит комично. Я понимаю, ему пофигу как он выглядит, он умное хочет донести — но это как если бы он вещал о моде, заправив юбку в трусы.

Для тех, кто не в курсе: новички часто так пишут, не знаю почему. Это — антипаттерн, нормальное использование print
print(str1, str2)
Использование антипаттерна в качестве иллюстрации — такое себе.

Вы делаете из мухи слона. Это просто иллюстрация работы оператора "+" в отношении строк, и ничего больше. Я бы, например, ваш пафосный комментарий причислил к антипаттернам принципа KISS — если бы он имел хоть какое-то отношение к теме статьи.

Надо же, кому-то полезна иллюстрация работы оператора "+" в отношении строк. Прошу прощения, недооценил аудиторию.

Всегда раздражал этот sep=" " по умолчанию.

Расскажите в каком-нибудь следующем посте про фабричные функции. Они меня, как человека перешедшего с С++, восхищают с одной стороны своей гибкостью и простотой, с другой совершенным непониманием об их применимости.
Заметьте, что перегрузка методов(method overloading) — создание методов с одним и тем же именем, но с разными типами аргументов не поддерживается в питоне.

В питоне есть singledispatch декоратор, который как бы похож на перегрузку методов, но я не буду утверждать на 100%, что это так называется. Как минимум позволяет иметь разные реализации для разных типов данных и при этом метод будет называться одинаково.

from functools import singledispatch


class TestClass(object):
    @singledispatch
    def test_method(arg, verbose=False):
        if verbose:
            print("Let me just say,", end=" ")

        print(arg)

    @test_method.register(int)
    def _(arg):
        print("Strength in numbers, eh?", end=" ")
        print(arg)

    @test_method.register(list)
    def _(arg):
        print("Enumerate this:")

        for i, elem in enumerate(arg):
            print(i, elem)

if __name__ == '__main__':
    TestClass.test_method(55555)
    TestClass.test_method([33, 22, 11])
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации