Форум сайта python.su
Почему?
Сложно ответить коротко.
У генератора есть контекст - в то время как у функции (даже рекурсивной) - он только в параметрах вызова и возвращаемом значении.
И каждое новое условие добавляет аргумент, а каждый нетривиальный случай заставляет по новому обработать вернувшееся значение.
Еще один немаловажный минус - отладка. Она, конечно, для слабых духом ребят - настоящие пацаны пишут все сразу и правильно.
Проверяя работу исключительно на юниттестах.
Я сам пытаюсь делать так, и отладчики кроме pdb не использую уже примерно лет пять.
В рекурсивных алгоритмах очень нелегко представить этот самый чертов контекст. Приходится прыгать по стеку вверх и вниз. Не
люблю.
PEP 342 позволяет более интересные возможности, выходящие за рамки вопроса.
Кстати, ваша всегда работающая функция споткнется, если файл есть - а прочитать его нельзя. Это мелкое замечание.
Вдобавок БОЛЬШИМИ буквами в Питоне принято обзывать константы. А остальным именам давать более говорящее название.
Офлайн
Если в общих чертах сравнивать рекурсию с генераторами, то я с вами пожалуй соглашусь. Но в данном случаи (копирование дерева файлов) пожалуй рекурсия более удобна.
>Кстати, ваша всегда работающая функция споткнется, если файл есть - а прочитать его нельзя.
Если файл не читается то его ни одна функция не скопирует. А насчёт букв это дело привычки, одним словом не вкус и цвет….
Офлайн
выпрыгивание с малопонятным исключением - все же не выход.
Рекомендованный вкус и цвет неплохо описан в PEP-8.
Офлайн
PEP-8 это всего лишь рекомендация.
>выпрыгивание с малопонятным исключением - все же не выход.
Дело в том что функция изначально предназначалась для работы без участия пользователя, по этому исключение и не обрабатывается. Ну а написать его обработчик кто угодно осилит.
Офлайн