【问题标题】:python - difference between print and return [duplicate]python - 打印和返回之间的区别[重复]
【发布时间】:2017-01-05 00:39:33
【问题描述】:

如果我在这个function 中打印for loop 的结果:

def show_recommendations_for_track(tracks = [], *args):

    results = sp.recommendations(seed_tracks = tracks, limit=100)
    tracks = results['tracks']
    for track in tracks:
        print track['name']

它打印一百个曲目名称。

如果我将print 换成return track['name']

它只打印一个曲目名称。

为什么?

【问题讨论】:

  • 因为return从函数返回。该函数的执行立即停止,并以调用该函数的任何内容恢复。
  • 事实上,它甚至不打印单个曲目名称。 return 不打印任何内容。可能是您的调用代码打印了返回值(这是函数找到的第一个音轨名称)。
  • 该函数不打印任何内容,它只是返回列表中的第一项。如果你在 python 命令轮中调用它,shell 会打印返回值。

标签: python


【解决方案1】:

Return 停止执行整个函数并将值返回给被调用者(因此名称为 return)。因为您在 for 循环中调用它,所以它在第一次迭代时执行,这意味着它运行一次然后停止执行。以此为例:

def test():
    for x in range(1, 5):
        print(x)
        return x

test()

这将给出以下输出:

1

这是因为 for 循环从 1 开始,打印 1,然后在 return 语句处停止所有执行并返回 1,即当前 x。


return 与 print 相差甚远。 Print 打印到输出,return 将给定的值返回给被调用者。这是一个例子:

def add(a, b):
    return a + b

这个函数将a+b的值返回给被调用者:

c = add(3, 5)

在这种情况下,c在赋值时调用了add。然后将结果返回给被调用者 c 并存储。

【讨论】:

    【解决方案2】:

    当您使用 return 时,循环仅在第一次 return 时结束。这就是为什么只返回一个名称的原因。 return 用于将某项功能从一个功能返回到另一个功能。

    打印并非如此。 print 将继续执行直到循环结束。这就是打印所有曲目名称的原因。

    【讨论】:

      【解决方案3】:

      Return 将简单地停止执行函数(无论是循环、开关还是等等...)!

      通过使用 return,您可以分配一个返回值的方法,允许您将该方法分配给一个变量。

      例如

      def onePlusOne():
          return 1+1
      

      然后您可以将此方法分配给一个变量,如下所示:

      onePlusOneEquals = onePlusOne()
      

      Print 只会将值打印到控制台。所以现在你可以打印 onePlusOneEquals 的值,像这样:

      print onePlusOneEquals
      

      控制台将记录:

      2
      

      【讨论】:

        【解决方案4】:

        好的...编程语言 101 次,孩子们。

        在 Python 中,print 语句就是这样做的 - 将指示的值打印到标准输出 (STDOUT)。在这种情况下,您将遍历整个 tracks 数组,并打印其中的每个值。

        在大多数编程语言中,return 关键字会将指示的值传递给调用函数,在调用函数中可以将其放置在变量中并用于其他用途。例如,如果你这样调用你的函数:

        track = show_recommendations_for_track(someTrackList)
        

        track 的值将是someTrackList 中的第一个值。因为return 会立即结束函数,所以只会将数组中的第一个值放入track,而不会发生其余的循环。

        【讨论】:

          猜你喜欢
          • 2022-08-17
          • 2014-04-09
          • 2011-04-22
          • 2011-12-01
          • 2017-07-18
          • 2016-03-22
          • 2017-04-27
          相关资源
          最近更新 更多