python - 是否有一种干净的方法可以仅在第一次迭代时或在执行之前检查循环内的变量?
问题描述
我的代码是用 Python 编写的,但这个问题适用于任何编程语言。
基本上,我有一个结构类似于此的循环:
while True:
if visual:
print("Something meaningful")
function1()
function2()
可视变量由用户在使用 CLI 参数调用脚本时确定,它是一个布尔值。基本上,如果设置为 True,用户会获得视觉反馈,如果设置为 False,他不会。
问题是循环将在每次迭代时检查该变量,从而稍微减慢执行速度。
因此,我想知道是否有一种干净的方法可以避免在每次迭代时检查“visual”是否为 True,以某种方式告诉程序仅在第一次迭代时检查该变量,因为该变量在执行过程中无法更改。
我想过做这样的事情:
if visual:
while True:
print("Something meaningful")
function1()
function2()
else:
while True:
function1()
function2()
它有效,但它似乎根本不是一个好的做法。
解决这个问题的最干净的方法是什么?
解决方案
我将从将while
循环中的函数分组到一个新函数中开始。然后在循环之前我们检查是否visual
为真,如果是,那么我们用一个wrapper装饰 。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()
推荐阅读
- reactjs - 如何在 ReactJS 中获取 api 数据?
- javascript - Javascript - 如何从多维数组中提取重复值并将它们放入单独的数组中?
- java - 比较对象练习 (Java)
- java - 方法中的空字符串返回语句,这只是为了名义目的还是可以改进?
- javascript - 如何使用reduce函数将数组转换为对象?
- sql - 你好,。我要 ssms 查询(SQL 查询)
- python - OpenCV背景减法获取颜色对象(Python)
- javascript - Asp.net core MVC 在不联系服务器的情况下禁用客户端计算机上的许多元素
- python - 如何在烧瓶中逐行返回一个json文件?
- javascript - 如何将字符串转换为 JavaScript 数组?