Ну ты я смотрю вообще развит не по годам, смотришь на всех с высока :) Не хочу угадывать, расскажи нам, какие методологические подходы ты применяешь, по сравнению с которыми декораторы и циклы - костыли.
Да понятно, что быстрее. Но вопрос-то не в этом. Всякие редьюс, мэп, фильтр и прочая и прочая - это просто элементы функциональщины в Python. Сам факт использования циклов ты ж не отрицаешь?
Анонимус-пыхпыхкодер, наверное, пишет только хэллоу-ворлд приложения, или модулечки для друпала в лучшем случае, иначе он бы все-таки понял, что цикл (наряду с ветвлением) - такая конструкция языка, без которой обходиться невозможно.
>Да понятно, что быстрее. Но вопрос-то не в этом. Всякие редьюс, мэп, фильтр и прочая и прочая - это просто элементы функциональщины в Python. Сам факт использования циклов ты ж не отрицаешь?
>Анонимус-пыхпыхкодер, наверное, пишет только хэллоу-ворлд приложения, или модулечки для друпала в лучшем случае, иначе он бы все-таки понял, что цикл (наряду с ветвлением) - такая конструкция языка, без которой обходиться невозможно.
Циклы нужны там, где они нужны. ну и соответственно наоборот. Но анонимус видимо предпочитает использовать джампы и гоуту))
Использовать в Python функциональный подход везде и всегда на мой взгляд является преждевременной оптимизацией. Во многих случаях такой код выглядит компактней - там это более чем уместно. Но совать его всюду просто потому, что он на пару микросекунд быстрее, имхо, не стоит. К тому же по oneliner'ам неудобно ходить отладчиком.
>Ну ваших знакомых. Тоже уверяет, что без них обходиться невозможно?
Это я хз что он им там рассказывает. Он у них не программирование ведет, а что-то типа человеко-машинного взаимодействия, просто пхп ему очень нравится.
Действительно без циклов и ветвлений можно обойтись(точнее по хитрому их представить). Сам долго удивлялся этому куря мануал по смолтолку. Но зачем и ради чего?где удобнее циклом лучше циклом, где лист-компрехеншном - лист-копмрехеншном.
А вообще если подумать, чем рекурсия лучше? Быстрее? Наврядли. Понятней? Тем более нет. Проще в отладке, экономичней по памяти? Снова нет. Так зачем тогда мух с котлетами в одну тарелку?
>А вообще если подумать, чем рекурсия лучше? Быстрее? Наврядли. Понятней? Тем более нет. Проще в отладке, экономичней по памяти? Снова нет. Так зачем тогда мух с котлетами в одну тарелку?
Понятнее -Да(хотя кому как). Остальное зависит от компилятора(интерпретатора) и пряморукости того, кто писал код.
>>>> В питоне я опишу функцию обработки одного элемента.
>>> Ага, я это и имел в виду.
>> А чем это плохо?
>Тем, что ты пишешь функцию там, где она не нужна (бритва Оккама, ага?). И тем, что получаешь лишний вызов функции в рантайме.
Давай байты еще поштучно посчитаем. Лишний вызов, зато код структурированнее. Бедные лисперы, сколько же у них вызовов функций в рантайме лишних. Кстати а подскажи как вызвать функцию не в рантайме.
>Да, и если ты считаешь, что используя map/reduce ты не пользуешься циклами - ты, мягко говоря, не всё знаешь.
Я функциями не пользуюсь, а то что происходит на боле низком уроне меня не волнует. В конце концов, продолжая твою логику, никто циклами не пользуется, ибо на ассемблере это все равно джамп на метки. но не ты же эти джампы пишешь.
Я функциями пользуюсь, а то что происходит на более низком уровне меня не волнует. В конце концов, продолжая твою логику, никто циклами не пользуется, ибо на ассемблере это все равно джамп на метки. но не ты же эти джампы пишешь.
Провел исследование небольшое на тему рекурсии и производительности.
>>> def f_recursive(n):
... if n <= 2: return n
... return n * f_recursive(n - 1)
...
>>> from timeit import timeit
>>> timeit('f_recursive(10)', setup='from __main__ import f_recursive')
3.3703920841217041
>>> def f_loop(n):
... ret = 1
... while n > 1: ret *= n; n -= 1
... return ret
...
>>> timeit('f_loop(10)', setup='from __main__ import f_loop')
2.4275178909301758
>>> timeit('f_functional(10)', setup='from operator import mul; f_functional = lambda n: reduce(mul, xrange(1, n + 1))')
2.0773041248321533
>>> timeit('factorial(10)', setup='from math import factorial')
0.52627015113830566
Sapienti sat.
> > Тем что это сугубо индивидуальное. Мне например отступы нравятся, а тебе нет.
> Вот-вот. Отступы провоцируют рознь!
Возможность выбора провоцирует рознь. Надо жить в таком обществе, чтобы выбора не было и как тебе надо делать говорили сверху. Скажут с отступами - будешь с отступами, скажут без -будешь без)))
> Надо жить в таком обществе, чтобы выбора не было и как тебе надо делать говорили сверху. Скажут с отступами - будешь с отступами, скажут без -будешь без)))
Неа, Скажут с отступами - начнутся народные волнения. Надо жить в таком обществе, где все будет хорошо. И без отступов.