【发布时间】:2019-10-28 08:53:07
【问题描述】:
假设有一个没有返回任何内容的函数,其中有一个循环。在某些时候必须完成函数调用(在循环中)。要清楚循环总是会迭代多次。有两种方法可以做到这一点:
1.用break结束循环:
def func():
while True:
do_smth....
if condition:
break
2。立即使用 return 结束函数调用:
def func():
while True:
do_smth....
if condition:
return
这些函数的实际作用应该没有区别,但哪种方式更有效?
【问题讨论】:
-
您的示例太有限,无法真正说出总体上最好的方法。在您给定的示例中,最佳解决方案根本不是循环,因为它会在一次迭代后退出
-
如果你有一个真正的案例,这实际上会产生任何重大差异,我会感到震惊...... :) 请记住,它是 Python。保持简单,不要尝试预先优化。
-
虽然一般不建议使用 true。大多数情况下不建议休息。如果函数什么都不返回,它不应该返回任何东西。问题和代码太笼统了。您在那里写的内容可以(并且应该)重构为
while not condition: do_smth。但这是基本编程,与 python 或中断/返回效率无关,顺便说一句,这不应该对您的代码产生影响。无论如何,func()是否在另一个循环中? -
是的,那么“正确的方法”就不是他们俩了。他们都错了。您可以在一些非常特殊的情况下看到这种变通方法,在这些情况下,替代方法更糟(就大多数情况下的可读性而言)。您编写的两个示例都会导致代码难以辨认,而且往往会导致错误。无论如何,就性能而言,“最佳”选项是不可能的,因为您在这里没有衡量什么都没有的大 O。至于其余的,经验法则:避免这种模式。还要检查zen
-
@MikeMajara 说得很好!