Питон попробовать...за исключением запятой против 'как' в кроме
в чем разница между ',' и 'as' в операторах except, например:
try:
pass
except Exception, exception:
pass
и:
try:
pass
except Exception as exception:
pass
является ли второй синтаксис законным в 2.6? Он работает в CPython 2.6 на Windows, но интерпретатор 2.5 в cygwin жалуется, что он недействителен.
если они оба действительны в 2.6, который я должен использовать?
4 ответа:
окончательный документ PEP-3110: ловить исключения
резюме:
- В Python 3.х, используя
as
и требуются чтобы назначить исключение переменной.- в Python 2.6+, используйте
as
синтаксис, так как он гораздо менее неоднозначен и вперед совместим с Python 3.x.- в Python 2.5 и более ранних версиях используйте версию запятой, так как
as
не поддерживается.
Да, это законно. Я запускаю Python 2.6
try: [] + 3 except Exception as x: print "woo hoo" >>> woo hoo
обновление: есть еще одна причина, чтобы использовать
as
синтаксис. Используя,
делает вещи намного более двусмысленными,как указывали другие; и вот что имеет значение. По состоянию на Python 2.6, естьmulticatch
что позволяет вам поймать несколько исключений в одномexcept
блок. В такой ситуации, это более выразительные и подходящие для Python, чтобы сказатьexcept (exception1, exception2) as e
а не скажи
except (exception1, exception2), e
который все равно будет работать
синтаксис "as" является предпочтительным в будущем, однако если ваш код должен работать со старыми версиями Python (2.6 является первым, чтобы поддержать новый), то вам нужно будет использовать синтаксис запятой.
Если вы хотите поддерживать все версии Python вы можете использовать sys.функция exc_info () выглядит следующим образом:
try: a = 1/'0' except (ZeroDivisionError, TypeError): e = sys.exc_info()[1] print(e.args[0])
(Источник:http://python3porting.com/noconv.html)