如何使用return语句修复函数而不返回所有行

时间:2019-03-27 15:53:03

标签: python sql

我有一个返回或应该返回从数据库表中选择的所有行的函数。但是,它仅返回第一行。我不太明白为什么在使用'return'关键字时不返回其余行。该代码有点长,所以我包括了一个示例代码,它的功能有些相似。我相信,如果我可以对此进行修复,则应该能够在主代码中对其进行修复。我的示例代码如下。在此代码中,仅打印黄色。请有人知道为什么吗?

def color_choser():
    colors = 'yellow', 'green', 'orange', 'blue', 'white', 'pupple', 'red', 'mangenta'
    for color in colors:
        return color
print(color_choser())

1 个答案:

答案 0 :(得分:2)

当一个函数返回一个值时,它将停止,因此,当将该return语句放入for循环中时,您将告诉它在循环的第一次运行后停止。您可以简单地返回不带循环的颜色元组:

def color_choser():
    colors = 'yellow', 'green', 'orange', 'blue', 'white', 'pupple', 'red', 'mangenta'
    return colors
print(color_choser())

>>>'yellow', 'green', 'orange', 'blue', 'white', 'pupple', 'red', 'mangenta'

或者,如果由于某种原因需要循环(我猜您实际上并不只是在打印该颜色列表),则可以将所需的值附加到列表中并返回该列表:

def color_choser(): 
  colorArray = []
  colors = 'yellow', 'green', 'orange', 'blue', 'white', 'pupple', 'red', 'mangenta'

  for color in colors: 
    colorArray.append(color) 

  return colorArray

print(color_choser())

>>>['yellow', 'green', 'orange', 'blue', 'white', 'pupple', 'red', 'mangenta']