문제
나는 Python을 처음 접했고, cx_Oracle
기준 치수. 에서 CX_ORACLE 문서 여기에는 다음과 같은 코드 예제가 있습니다.
import sys
import cx_Oracle
connection = cx_Oracle.Connection("user/pw@tns")
cursor = connection.cursor()
try:
cursor.execute("select 1 / 0 from dual")
except cx_Oracle.DatabaseError, exc:
error, = exc.args
print >> sys.stderr, "Oracle-Error-Code:", error.code
print >> sys.stderr, "Oracle-Error-Message:", error.message
내 질문은 "오류"객체가 생성되는 위치와 관련이 있습니다. "무엇을" ", =
"그렇습니까? 나는 파이썬 문서 검색을 시도했지만 운영자를 검색 할 때 검색 엔진이 잘 작동하지 않습니다. :-)
exc.args는 싱글 톤 튜플이지만 이해가 안 돼요. ", =
"구문. 쉼표를 제거하면 오류 메시지가 나타납니다."AttributeError: 'tuple' object has no attribute 'code'
".
누군가가 이것이 문서화 된 위치를 가리킬 수 있습니까? 감사!
편집하다:
이것은 튜플을 풀지 않고도 작동합니다.
import sys
import cx_Oracle
connection = cx_Oracle.Connection("user/pw@tns")
cursor = connection.cursor()
try:
cursor.execute("select 1 / 0 from dual")
except cx_Oracle.DatabaseError, exc:
print >> sys.stderr, "Oracle-Error-Code:", exc.args[0].code
print >> sys.stderr, "Oracle-Error-Message:", exc.args[0].message
해결책
error, = exc.args
이것은의 경우입니다 시퀀스 풀기.
더 읽기 쉬운 방법을 똑같이 쓰는 방법과 내가 개인적으로 선호하는 스타일은 다음과 같습니다.
[error] = exc.args
이전 예를 이해하는 데 필요한 두 가지 비트가 있습니다.
- 과제의 왼쪽이 재귀적인 이름 시퀀스 인 경우 오른쪽의 값은 길이가 같은 시퀀스 여야하며 RHS 값의 각 항목은 LHS의 해당 이름에 할당됩니다.
- 파이썬의 한 항목 튜플이 작성되었습니다
(foo,)
. 대부분의 상황에서 괄호는 헌신 할 수 있습니다. 특히 과제 연산자 옆에서 생략 할 수 있습니다.
다른 팁
http://www.python.org/doc/2.5.2/tut/node7.html
섹션 5.3에서 "시퀀스 풀기"를 찾으십시오.
쉼표는 튜플을 풀고, 즉 튜플의 단일 항목을 추출하고,이를 바인딩하는 역할을합니다. error
. 쉼표가 없으면 내용보다는 튜플 자체를 묶을 것입니다.
제휴하지 않습니다 StackOverflow