1 python tuples kinterbasdb argument-unpacking
我正在使用kinterbasdb模块,该模块有一个名为fetchone的函数,它返回执行查询的结果:
cursor.execute("....")
cursor.fetchone()
Run Code Online (Sandbox Code Playgroud)
这会返回一个元组:("value1",),我想要访问第一个项目,但是最后避免使用[0]它,因为它没有说明多少,这是一个神奇的数字.可能吗?也许有些内置功能?
我试图用:
value, _ = cursor.fetchone()
Run Code Online (Sandbox Code Playgroud)
但这是回归:ValueError: need more than 1 value to unpack因为索引1没有任何东西.
问题:
value, _ = cursor.fetchone()
# ^ a variable with identifier _
Run Code Online (Sandbox Code Playgroud)
是它在这里期望你想要解包的元组中的两个元素,但元组只包含一个元素.但是你可以通过编写逗号来解决这个问题,但是没有变量如:
value, = cursor.fetchone()
# ^ no variable
Run Code Online (Sandbox Code Playgroud)
请记住你必须写逗号,:省略它不会解压缩元组.
或者如果元组中的元素数量未知(但大于零),您可以使用aterisk:
value, *_ = cursor.fetchone()
Run Code Online (Sandbox Code Playgroud)
这将解包元组中的其余元素_.如果表达式具有包含一个元素的元组,_则将等于_ == ()(没有元素的元组).如果你解压缩(1,4,2,5),它将导致value == 1和_ == (4,2,5).