【问题标题】:Get first item of returning function value获取返回函数值的第一项
【发布时间】:2017-07-01 12:53:41
【问题描述】:

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

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

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

我正在尝试:

value, _ = cursor.fetchone()

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

【问题讨论】:

  • 哪个版本的 Python? value, *_ = ... 有效吗?在这种情况下,我也不会将 0 视为幻数。

标签: python tuples argument-unpacking kinterbasdb


【解决方案1】:

问题:

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

是不是这里需要两个元素在你想解包的元组中,但是元组只包含一个元素。但是,您可以通过写一个逗号来解决这个问题,但没有像这样的变量:

value, = cursor.fetchone()
#     ^ no variable

请注意,您必须编写逗号 ,:省略它不会解包元组。

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

value, *_ = cursor.fetchone()

这将解压元组_ 中的剩余元素。如果表达式有一个包含一个元素的元组,_ 将等于 _ == ()(没有元素的元组)。例如,如果你解压(1,4,2,5),它将导致value == 1_ == (4,2,5)

【讨论】:

    【解决方案2】:

    通过使用它的索引访问元素会更容易,希望它有所帮助,我用一个非常基本的例子解释了这一点:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      相关资源
      最近更新 更多