【发布时间】:2021-03-07 02:49:48
【问题描述】:
我的代码是用 Python 编写的,但这个问题适用于任何编程语言。
基本上,我有一个类似这样结构的循环:
while True:
if visual:
print("Something meaningful")
function1()
function2()
可视变量由用户在使用 CLI 参数调用脚本时确定,它是一个布尔值。基本上,如果设置为 True,用户会获得视觉反馈,如果设置为 False,则不会。
问题在于循环会在每次迭代时检查该变量,从而稍微减慢执行速度。
因此,我想知道是否有一种干净的方法可以避免在每次迭代时检查“visual”是否为真,以某种方式告诉程序仅在第一次迭代时检查该变量,因为变量不能在中间更改-执行。
我想过做这样的事情:
if visual:
while True:
print("Something meaningful")
function1()
function2()
else:
while True:
function1()
function2()
它有效,但它似乎根本不是一个好的做法。
解决这个问题最干净的方法是什么?
【问题讨论】:
-
“稍微减慢执行速度”,当您已经在使用 python 时,检查静态布尔值并不是优化的重点。
-
@OlvinRoght 我同意,我实际上并不想优化它,我实际上只是好奇。如果您考虑一下,检查一个布尔值在执行时间方面毫无意义,但如果我让这个循环运行一周或一个月,我确信每次迭代检查一个变量加起来就是可以被认为是有意义的东西。
-
如果 function1() 和 function2() 不是微不足道的,布尔检查将可以忽略不计。您可以使用相同的参数内联函数以减少子程序跳转的开销。
标签: python algorithm loops if-statement while-loop