Что является различием между'', и 'как' в кроме операторов, например:
try:
pass
except Exception, exception:
pass
и:
try:
pass
except Exception as exception:
pass
Действительно ли второй синтаксис законен в 2,6? Это работает в CPython 2.6 над Windows, но 2,5 интерпретатора в cygwin жалуются, что это недопустимо.
Если они оба допустимы в 2,6, который я должен использовать?
Окончательный документ - PEP-3110: перехват исключений
Резюме:
как
требуется для назначения исключения переменной. как
, поскольку он гораздо менее неоднозначен и совместим с Python 3.x. как
не поддерживается. синтаксис «as» является предпочтительным в будущем, однако, если ваш код должен работать со старыми версиями Python (2.6 - первая версия, поддерживающая новую), вам необходимо использовать синтаксис с запятой.
Да, это законно. Я использую Python 2.6
try:
[] + 3
except Exception as x:
print "woo hoo"
>>>
woo hoo
Update: Есть еще одна причина использовать синтаксис as
. Использование ,
делает ситуацию гораздо более неоднозначной, как отмечали другие; и вот в чем разница. Начиная с Python 2.6, существует multicatch
, который позволяет ловить несколько исключений в одном except
блоке. В такой ситуации выразительнее и питоничнее сказать
except (exception1, exception2) as e
а не сказать
except (exception1, exception2), e
а, что все равно сработает