Питон попробовать...за исключением запятой против 'как' в кроме
в чем разница между ',' и '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)