Относительно foreach
: Это не использует 'утиный ввод', поскольку утка, вводящая IMO, обращается к проверке на этапе выполнения. Это использует структурный тип, проверяющий (в противоположность номиналу) во время компиляции для проверки на требуемый метод в типе.
Хотя принятый ответ подчеркивает на, "смотрят перед прыганием" принципа, мог бы относиться к большинству языков, больше pythonic могло бы быть первым подходом, на основе принципов Python. Не говоря уже о нем законный стиль кодирования в Python. Важная вещь состоит в том, чтобы удостовериться, что Вы используете попытку кроме блока в правильном контексте, и применяет лучшие методы. Например, делая слишком много вещей в блоке попытки, ловя очень широкое исключение, или хуже - пустое кроме пункта и т.д.
Легче попросить прощение, чем разрешение. (EAFP)
Видят ссылку документов Python здесь .
кроме того, этот блог от Brett, одного из ядра devs, касается большей части из этого вкратце.
Посмотрите другого ТАК обсуждение здесь :