【问题标题】:return vs print list返回与打印列表
【发布时间】:2015-11-25 13:07:53
【问题描述】:

对编程非常陌生。
想知道为什么这个示例打印列表中的所有项目,而第二个示例只打印第一个?

def list_function(x):
    for y in x:
        print(y)

n = [4, 5, 7]
list_function(n)

def list_function(x):
    for y in x:
        return y 

n = [4, 5, 7]
print(list_function(n))

【问题讨论】:

  • 返回总是终止函数的执行。
  • 我要收藏这个问题,作为反对所有说新的编程问题在这里不受欢迎或立即被否决的人的证据。这是一个写得很好的问题,关于一个非常基本的主题,没有一个反对意见。
  • 酷.. 很高兴这是一个好问题!堆栈溢出是惊人的。

标签: python list printing return


【解决方案1】:

您的第一个示例遍历x 中的每个项目,将每个项目打印到屏幕上。您的第二个示例开始遍历x 中的每个项目,但随后它返回第一个,这将在该点结束函数的执行。

让我们仔细看看第一个例子:

def list_function(x):
    for y in x:
        print(y)  # Prints y to the screen, then continues on

n = [4, 5, 7]
list_function(n)

在函数内部,for 循环将开始迭代 x。首先将y 设置为4,即打印出来。然后将其设置为5 并打印,然后将7 设置为并打印。

现在看第二个例子:

def list_function(x):
    for y in x:
        return y  # Returns y, ending the execution of the function

n = [4, 5, 7]
print(list_function(n))

在函数内部,for 循环将开始迭代 x。首先将y 设置为4,然后返回。此时,函数的执行被暂停并将值返回给调用者。 y 永远不会设置为 57。这段代码仍然在屏幕上打印一些东西的唯一原因是因为它是在print list_function(n) 行上调用的,所以将打印返回值。如果你只是像第一个例子那样用list_function(n) 调用它,那么屏幕上不会打印任何内容。

【讨论】:

  • 谢谢。我明白,我很困惑的是你的第二句话..为什么它只返回第一句话?
  • @Dude,因为return 返回值然后结束函数的执行,而print 只是打印值。第二个打印出该值的唯一原因是因为您正在使用返回值调用print
  • 啊抱歉没有读到“开始”这个词。现在这是有道理的。谢谢
  • @Dude,没问题。如果这回答了您的问题,您应该投票并接受答案:)。还赞成其他好的答案。 stackoverflow.com/help/someone-answers
【解决方案2】:

对于函数return终止执行,因此返回后不会执行任何操作。

在您的情况下,第一个函数 将打印所有项目,因为没有什么会破坏该过程。然而,在第二个函数中,它将返回并结束进程。

【讨论】:

    猜你喜欢
    • 2015-11-25
    • 2017-07-03
    • 1970-01-01
    • 2019-10-14
    • 2018-03-05
    • 1970-01-01
    • 2020-11-06
    • 2017-05-05
    • 2023-01-13
    相关资源
    最近更新 更多