مبتدئ 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.وسائط هو المفرد tuple, ولكن أنا فقط لا أفهم ", =
"بناء الجملة.إذا كنت إزالة فاصلة ، أحصل على رسالة الخطأ "AttributeError: 'tuple' object has no attribute 'code'
".
شخص ما يمكن أن تشير لي إلى حيث هذا هو موثق ؟ وذلك بفضل!
تحرير:
هذا يعمل دون الحاجة إلى فك tuple:
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.
- واحد البند tuple في بيثون هو مكتوب
(foo,)
.في معظم السياقات ، قوسين يمكن حذفها.ولا سيما أنها يمكن حذف بجانب عامل التعيين.
نصائح أخرى
http://www.python.org/doc/2.5.2/tut/node7.html
البحث عن "تسلسل الفتح" في القسم 5.3.
فاصلة يعمل على فك tuple ، أيفإنه استخراج عنصر واحد من tuple كما بربط error
.دون فاصلة ، يمكنك ربط المجموعة نفسها, بدلا من محتواه.