1. Python / Говнокод #9982

    −92

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    def success_operation(operation):
        """помечаем операцию как оплаченную"""
    
        #получаем коллбэк и выполняем его
        if operation.close_callback:
            path, callback_name, params =\
                (lambda v, f: (len(v) > 1 and f(v[0], v[1])) or f(v[0]))(
                        (operation.close_callback or '').split('|'),
                        lambda n, k = None:
                            (lambda n: (lambda l: ['.'.join(l[0:len(l) - 1]) or 'app.billing.callbacks'] + [l[len(l) - 1]])(
                                n.split('.'))
                            )(n) + \
                            [(lambda k: not (k is None) and reduce(
                                    lambda h, t: (lambda a, p: a.setdefault(*p) and a)(
                                        h,
                                        (lambda l: (l[0].strip(), l[1].strip()))(t.split('='))
                                    ),
                                    k.split(','),
                                    {})
                             )(k) or {}])

    Человек правильно живет, но зря.

    Запостил: tonatos, 19 Апреля 2012

    Комментарии (29) RSS

    • (lambda n: ...
        (lambda n: ...))

      Зачем такое может вообще понадобиться?
      Ответить
      • Возможно, причина в том, что в питоне в теле лямбды может быть только одно выражение. Вот человек и вкладывает их как матрёшки.
        Ответить
        • Это понятно. Но - зачем? Может разбить на три, в крайнем случае?
          Ответить
          • Думаю, автор просто хотел выпендриться может ему маша не дала.
            С учётом того, что можно вкложить определения функций друг в друга, мотив just for fun очевиден.
            Ответить
            • ­ .. .
              почему у вас у с точкой?
              Ответить
              • т.е. слово ВКЛОЖИТЬ вас интересует гораздо меньше
                Ответить
                • #inxlude
                  Ответить
                • вкложуры
                  Ответить
                  • >только мне здесь послышалось clojure?
                    Я уже сказал это постом выше.
                    Ответить
                • только мне здесь послышалось clojure?
                  Ответить
                  • Интересно, что на это сказал бы Фрейд...
                    Ответить
                    • наверное, что-то в его духе, типа "значит, подсознательно Вы хотите изнасиловать свою мать в духовке на глазах у всей челябинской родни..."
                      Ответить
                      • зы:
                        > SMTP Error: Data not accepted.
                        SMTP покраснел и сказал:
                        - не буду я это цитировать
                        Ответить
                      • Скорее то, что ваша сексуальная энергия направлена в нужное русло и не нуждается в сублимации.
                        P.S.: Кузе привет.
                        Ответить
        • Не, я имел в виду то, что аргумент внешней и внутренней лямбды с одним и тем же именем - т.е. его специально "затирают" внутри вложенной лямбды - но я не могу представить жизненную ситуацию когда бы это было нужно.
          Ответить
          • видимо, замыкания там просто не нужно было, а новую букву придумывать было лень
            Ответить
            • Автор столько трудился, а на новую букву сил не хватило? :)
              Ответить
    • Ну как. Когда туториалов по хаскелю перечитаешь, и не такое понадобится))
      Ответить
    • Ничё не понятно
      Ответить
      • Зато как круто.
        Ответить
        • В питоне непонятно === отстой, за это его и любят
          Ответить
        • Я так догадываюсь, что тут делается попытка изобрести регулярное выражение типа:
          /(([^=|]*)=([^|]*)|)+/g
          - ну или что-то очень похожее. Угадал? :)
          Ответить
    • lambdacore
      Ответить
    • не Pythonic. Такое ощущение, что человек тренировался использовать питоньи лямбды. В хаскелле так тоже не делают, кстати: композиция функций предпочтительней лямбд, и автоматическое каррирование сильно помогает их избегать.
      Ответить
    • Зашел сюда прочитать "ехал лямбда через лямбда".
      WTF???
      Ответить
    • "Не хотели переходить на Лисп - получайте"
      Ответить

    Добавить комментарий