programing

Python try...제외(쉼표 vs 'as' 제외)

bestcode 2022. 9. 8. 22:02
반응형

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+에서는asPython 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

반응형