python - 是否有一种干净的方法可以仅在第一次迭代时或在执行之前检查循环内的变量?

标签 python algorithm loops if-statement while-loop

我的代码是用 Python 编写的,但这个问题适用于任何编程语言。

基本上,我有一个结构类似于这样的循环:

while True:
    if visual:
        print("Something meaningful")
    function1()
    function2()

视觉变量由用户在使用 CLI 参数调用脚本时确定,它是一个 bool 值。基本上,如果设置为 True,用户将获得视觉反馈,如果设置为 False,则不会。

问题是循环将在每次迭代时检查该变量,从而稍微减慢执行速度。

因此,我想知道是否有一种干净的方法可以避免在每次迭代时都必须检查“visual”是否为 True,以某种方式告诉程序仅在第一次迭代时检查该变量,因为该变量不能更改 mid -执行。

我想到了做这样的事情:

if visual:       
    while True:
        print("Something meaningful")
        function1()
        function2()
else:
    while True:
        function1()
        function2()

它有效,但它似乎根本不是一个好的做法。

解决这个问题最干净的方法是什么?

最佳答案

我会首先将 while 循环中的函数分组到一个新函数中。然后在循环之前我们检查 visual 是否为 True,如果是则我们用 wrapperdecorate functions() >.

def functions():
    function1()
    function2()

def _visual_decorator(func):
    def _wrapper(*args, **kwargs):
        print("Something meaningful")
        return func(*args, **kwargs)
    return _wrapper

if visual:
    functions = _visual_decorator(functions)

while True:
    functions()

Full working example

关于python - 是否有一种干净的方法可以仅在第一次迭代时或在执行之前检查循环内的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64984506/

相关文章:

python - 使用 Python 对 URL 进行切片

python - 导入错误 : cannot import name '_gi' from partially initialized module 'gi' (most likely due to a circular import)

algorithm - 算法中的大 O 复杂度

c# - 我的第一个非重复字符算法的缺陷在哪里?

loops - 包含循环的 Powershell 文本/html 模板

python - 如何在 Python 循环中重命名变量

python - 在同一图 pandas 上绘制多个数据框

php - 将 N 名员工安置在具有角色的 M 个职位的算法

loops - 循环中的异步和等待多个任务,如何返回单个任务

python - Pandas:迭代并插入具有组内条件的列复杂问题