获取返回函数值的第一项

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没有任何东西.

Wil*_*sem 5

问题:

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).