Python try...제외(쉼표 vs 'as' 제외)
예를 들어 다음과 같은 문장에서 "", "as"와 "as"의 차이점은 무엇입니까?
try:
pass
except Exception, exception:
pass
또, 다음과 같이 합니다.
try:
pass
except Exception as exception:
pass
두 번째 구문은 2.6에서 합법적입니까?Windows의 CPython 2.6에서 동작하지만 cygwin의 2.5 인터프리터는 무효라고 불평합니다.
2.6에서 둘 다 유효하다면 어떤 것을 사용해야 합니까?
최종 문서는 PEP-3110: 예외 포착
요약:.
- Python 3.x에서는 사용
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 (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)
Python 3.7(다른 버전은 확실하지 않음)부터는 'comma' 구문이 더 이상 지원되지 않습니다.
소스 파일exception_comma.py
:
try:
result = 1/0
except Exception, e:
print("An error occurred")
exit(1)
exit(0)
$ python --version --> Python 2.7.10
$ python exception_comma.py
An error occurred
$ python3 --version --> Python 3.7.2
$ python3 exception_comma.py
File "exception_comma.py", line 3
except Exception, e:
^
SyntaxError: invalid syntax
언급URL : https://stackoverflow.com/questions/2535760/python-try-except-comma-vs-as-in-except
'programing' 카테고리의 다른 글
UPDATE 쿼리에서 3개의 테이블 JOIN을 수행하려면 어떻게 해야 합니까? (0) | 2022.09.08 |
---|---|
Realm Browser에서 Realm 파일을 표시하려면 어떻게 해야 하나요? (0) | 2022.09.08 |
현재 사용하고 있는 CodeIgniter 버전은 무엇입니까? (0) | 2022.09.08 |
jQuery의 $.ready()에 상당하는 Vanilla JavaScript - 페이지/DOM이 준비되었을 때 함수를 호출하는 방법 (0) | 2022.09.05 |
두 개의 dicts(양쪽에 나타나는 키의 값을 추가하는)를 조합하는 피토닉 방법이 있습니까? (0) | 2022.09.05 |