我是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
我的问题与创建"错误"对象的位置有关." , =
"是做什么的?我尝试搜索Python文档,搜索引擎在搜索运算符时效果不佳.:-)
我知道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
ddaa.. 10
error, = exc.args
这是序列解包的情况.
写一个更可读的方式,以及我个人喜欢的风格是:
[error] = exc.args
理解前面的示例需要两个位:
当赋值的左侧是递归的名称序列时,右侧的值必须是具有相同长度的序列,并且RHS值的每个项目被分配给LHS中的相应名称.
编写了python中的单项元组(foo,)
.在大多数情况下,可以省略括号.特别是,它们可以在赋值运算符旁边省略.
Matthew Chri.. 5
http://www.python.org/doc/2.5.2/tut/node7.html
在5.3节中查找"序列解包".
error, = exc.args
这是序列解包的情况.
写一个更可读的方式,以及我个人喜欢的风格是:
[error] = exc.args
理解前面的示例需要两个位:
当赋值的左侧是递归的名称序列时,右侧的值必须是具有相同长度的序列,并且RHS值的每个项目被分配给LHS中的相应名称.
编写了python中的单项元组(foo,)
.在大多数情况下,可以省略括号.特别是,它们可以在赋值运算符旁边省略.
http://www.python.org/doc/2.5.2/tut/node7.html
在5.3节中查找"序列解包".