获取返回函数值的第一项

时间:2017-02-13 13:53:54

标签: python tuples argument-unpacking kinterbasdb

我正在使用kinterbasdb模块,该模块有一个名为fetchone的函数,它返回执行查询的结果:

cursor.execute("....")
cursor.fetchone()

这会返回一个元组:("value1",),我希望访问第一个项目,但最后避免使用[0],因为这并不多,这是一个神奇的数字。可能吗?也许有些内置功能?

我试图用:

value, _ = cursor.fetchone()

但这是返回:ValueError: need more than 1 value to unpack,因为索引1没有任何内容。

2 个答案:

答案 0 :(得分:5)

问题:

<div class="con">
  <div class="box">
    <img src="http://www.w3schools.com/css/img_fjords.jpg">
  </div>
</div>

这里在你要解包的元组中需要两个元素,但元组只包含一个元素。但是,您可以通过编写逗号来解决此问题,但不能使用以下变量:

value, _ = cursor.fetchone()
#      ^ a variable with identifier _

请注意,必须写逗号value, = cursor.fetchone() # ^ no variable :省略它将解包元组。

或者如果元组中的元素数量未知(但大于零),您可以使用aterisk:

,

将解包元组value, *_ = cursor.fetchone() 中的其余元素。如果表达式具有包含一个元素的元组,则_将等于_(没有元素的元组)。如果您为实例_ == ()解压缩,则会生成(1,4,2,5)value == 1

答案 1 :(得分:0)

通过使用其索引访问元素会更容易,希望对您有所帮助,我使用一个非常基本的示例对此进行了解释:

def test_function():

return 1,3,4,5,6

#--- Getting function output using index ----#

print('',f()[0],' \n',f()[1],'\n',f()[2],' ..........')

结果:

 1  
 3 
 4  ..........