gpt4 book ai didi

python - 变量检查的干净方式 + 在 while 循环中继续

转载 作者:行者123 更新时间:2023-12-04 15:12:26 24 4
gpt4 key购买 nike

我有一个相对较大的 main() 函数,我需要在函数的不同位置多次检查一个变量,然后决定是否应该继续循环因此,像这样:

def main():
while True:
...
if foo.check():
reset()
continue
...

foo 正在作为某种计时员工作,因此我需要在特定时间间隔 检查它。这 3 行在函数中出现了大约 3 到 5 次。

我讨厌这太脏了,那么有没有更干净的方法来做到这一点?

最佳答案

您没有指定足够的信息。我有两个问题:

  1. 调用 foo.check() idempotent 是否意味着它总是返回相同的值并且没有副作用?
  2. 是否有通过代码的路径可以到达第 nth 调用 foo.check() 在由 continue 语句控制的同一 block 中 没有先调用第 n-1 次?

例如,如果第一个问题的答案是肯定的,而第二个问题的答案是否定的,那么您可以删除除第一次出现的 foo.check() 调用之外的所有内容,因为返回值显然是 False,否则您将永远无法到达第二次出现的位置。

如果第一个问题的答案是肯定的,第二个问题的答案是肯定的,那么如果调用 foo_check() 是昂贵的,我可能会考虑预先设置:

check_result = foo.check()

然后用 check_result 替换对 foo_check() 的每次调用。但最终你仍然需要做所有的检查。但在所有情况下,您都可以创建函数 check_and_reset:

def check_and_reset():
if foo_check():
reset()
return True
return False

然后你的代码变成:

if check_and_reset(): continue

关于python - 变量检查的干净方式 + 在 while 循环中继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64968472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com