return 语句的目的是什么?它与印刷有何不同?

新手上路,请多包涵

return 语句有什么作用?它应该如何在 Python 中使用?

returnprint 有何不同?


通常,人们尝试在函数内部的循环中使用 print 以查看多个值,并希望能够使用外部的结果。它们需要返回,但 return 第一次退出函数。请参阅 如何使用 `return` 从 for 循环中取回多个值?我可以把它们放在一个列表中吗? .

很多时候,初学者会写一个函数,最终 print s something 而不是 return ,然后也尝试 print 出乎意料的结果,导致 None 。这可以通过最后不 print ing 来解决;但该函数 通常 应该是 return 值,以便调用者可以 print 编辑。请参阅 为什么在我的函数输出后打印“无”? .

偶尔在 3.x 中,人们尝试将 print 的结果 分配 给一个名称,或者在另一个表达式中使用它,例如 input(print('prompt:')) 。在 3.x 中, print 是一个函数,所以这不是语法错误;但它返回 None 而不是显示的内容。请参阅 为什么 print 函数返回 None? .

有时,人们编写的代码会尝试 print 递归 调用的结果,而不是 return 正确执行它。就像函数只是被调用一样,这不能通过递归将值传播回来。请参阅 为什么我的递归函数返回 None? .

考虑 如何从函数中获取结果(输出)?以后如何使用结果? 对于简单的关于 如何使用 的问题 return ,而不考虑 print

原文由 Hitesh Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 625
1 个回答

print() 函数在控制台中写入(即“打印”)一个字符串。 return 语句导致您的函数退出并将值返回给其调用者。一般来说,函数的要点是接受输入并返回一些东西。 return 语句在函数准备好向其调用者返回值时使用。

例如,这是一个同时使用 print()return 的函数:

 def foo():
    print("hello from inside of foo")
    return 1

现在您可以运行调用 foo 的代码,如下所示:

 if __name__ == '__main__':
    print("going to call foo")
    x = foo()
    print("called foo")
    print("foo returned " + str(x))

如果您将其作为脚本(例如 .py 文件)而不是在 Python 解释器中运行,您将获得以下输出:

 going to call foo
hello from inside foo
called foo
foo returned 1

我希望这能让它更清楚。解释器将返回值写入控制台,这样我就可以明白为什么有人会感到困惑。

这是解释器的另一个例子,它证明了这一点:

 >>> def foo():
...     print("hello within foo")
...     return 1
...
>>> foo()
hello within foo
1
>>> def bar():
...   return 10 * foo()
...
>>> bar()
hello within foo
10

您可以看到,当从 foo() 调用 bar() 时,1 未写入控制台。相反,它用于计算从 bar() 返回的值。

print() 是一个会产生副作用的函数(它会在控制台中写入一个字符串),但会继续执行下一条语句。 return 导致函数停止执行并将值返回给调用它的任何对象。

原文由 Nathan Hughes 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题