【问题标题】:Returning a value of a function does not work over multiple iterations via for loop通过 for 循环返回函数的值不适用于多次迭代
【发布时间】:2020-09-19 15:49:00
【问题描述】:

我定义了以下函数:

def test():
    return 1

一旦我在控制台中输入以下内容:

test()

我得到返回的预期值 1。但我希望 1 被返回两次,所以我在控制台中输入:

values = [1,2]
for i in values:
    test()

但是我现在没有输出。为什么它不产生任何输出,我该如何编辑它呢?

【问题讨论】:

  • print(test())?如果您在 REPL(如解释器)中工作,则仅针对表达式或显式 prints 显示输出。
  • 在第一种情况下,REPL 打印返回值 1,在第二种情况下,代码块返回 Nothing,因此不打印任何内容

标签: python return


【解决方案1】:

首先,您应该修复您的 for 循环。如果你想指定一个 for 循环应该运行的次数,你应该使用 range() 函数。

for x in range(2):
    test()

其次,返回值不会输出值,除非您打印它,即print(test())

【讨论】:

    【解决方案2】:

    实际上,您需要将返回的值打印出来才能在控制台中显示。试试这个:

    values = [1, 2]
    for i in values:
        print(test())
    

    您可能会问为什么它在第一种情况下有效。我没有确切的答案,但我可以给你一个线索。自动打印“最后一行代码”的返回值。这不是正确/好的解释。也许其他人可以帮助解决这个问题。

    顺便说一句,这是编写上述代码的更好方法:

    for i in range(2):
        print(test())
    

    【讨论】:

      【解决方案3】:

      我不知道为什么它对你不起作用,但是当我在我的计算机上运行这段代码时,一切都很好

      def test():
          return 1
      
      print("First case:")
      print(test())
      
      print("Second case:")
      list = [1,2]
      for i in list:
          print(test())  
      

      输出:

      First case:
      1
      Second case:
      1
      1
      

      【讨论】:

        【解决方案4】:

        只需在 for 循环内的 test() 上打印,如下所示

        for i in values:
            print(test())
        

        现在的输出是:

           1
           1
        
        

        【讨论】:

          【解决方案5】:

          正如其他答案所指出的,在循环内执行 print 将打印该值。没有人提到的微妙之处在于,原因 for 循环不能单独工作是 for 不返回值。循环内的表达式被求值,但它们的值被丢弃。

          如果你想做一个循环,确实返回其中的表达式的值(这样你就可以在解释器中看到这些值而不必打印它们,或者用这些值做其他事情值),列表推导是一个好方法:

          >>> def test():
          ...     return 1
          ...
          >>> values = [1,2]
          >>> [test() for i in values]
          [1, 1]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-02-23
            • 2021-01-07
            • 2012-04-08
            • 1970-01-01
            相关资源
            最近更新 更多