to post messages and comments.

← All posts tagged Python

github.com (мой вольный пересказ)
Язык “Дежурный”. Если функция кидает исключение, она должна быть наказана. Если функция наружает клятву или обещания (что-то похожее на `assert`), она должна быть наказана. У Дежурного одно наказание. Удаление. Функция будет удалена из ваших исходников.

не часто задаю вопросы по питону, но даже не знаю как нагуглить. Вот есть список. Я его последовательно фигачу фильтрами, мапами. Общим, вот кот специально для пимера:
#!/usr/bin/env python
import sys

if __name__ == '__main__':
    with open(sys.argv[1]) as f:
        lines = f.readlines()
        lines = map(str.strip, lines) #stripping endlines
        lines = filter(bool, lines) #stripping empty lines
        lines = filter(lambda l: ':' in l, lines) #filter out strings withot :
        lines = map(lambda l: l.split(':', 1), lines)
        lines = map(lambda l: "=".join(l), lines)
        print "\n".join(lines)

Можно легко заметить паттерн. Общим, а я хочу зафигачить (монаду?) что бы можно было все как-то чейнить? Я наваял что-то типа этого, но выглядит ужасно. Есть ли методы получше?

#!/usr/bin/env python
import sys

class Monadinize():
    def __init__(self, l):
        self.l = l

    def map(self, f, *args):
        self.l = map(f, self.l, *args)
        return self

    def filter(self, f):
        self.l = filter(f, self.l)
        return self

    def done(self):
        return self.l

if __name__ == '__main__':
    with open(sys.argv[1]) as f:
        out = Monadinize(f.readlines()) \
                    .map(str.strip) \
                    .filter(bool) \
                    .filter(lambda l: ':' in l) \
                    .map(lambda l: l.split(':', 1)) \
                    .map(lambda l: "=".join(l)) \
                    .done()
        print "\n".join(out)

Ведь паттерн такой общий, должны же быть инструменты, а?

Вот пишу на тайпскрипт. Штука сделана исключительно что бы помочь IDE давать подсказки :(
Иногда складывается впечатление, что стрикт тайпинг сделан исключительно что бы было легче разработчиками JetBrains ... & MS Visual Studio делать свои поделки. Что бы убедится в этом достаточно посмотреть презентацию того же котлин. А вообще пофиг. Это не то что хотел сказать. Хотел сказать что разработчики сред программирования — ленивые и плохо делают свою работу.

В Яндекс Киева нужен питонист. Как всегда есть затравочные вопросы на интервью. Давайте мерятся кто круче ответит на 1 и 3  Ну и вообще, хочу прграммистского дискача на жуйке, а то все сопли да розмазня. Го в комменты! Вот кстате ссылка http://company.yandex.ru/job/vacancies/system_testing_python.xml