在 Python 中只运行一次函数
Run a Function only Once in Python
只运行一次函数:
- 声明一个全局变量并将其初始化为
False
. - 在函数中将全局变量的值更改为
True
。 - 如果全局变量设置为 ,则仅运行函数中的代码
False
。
主程序
# ✅ Run function only once (using global variable) sum_has_run = False def sum(a, b): global sum_has_run if sum_has_run: return sum_has_run = True return a + b print(sum(100, 100)) # 👉️ 200 print(sum(100, 100)) # 👉️ None # ---------------------------- # ✅ Run function only once (using attribute on the function) def sum(a, b): if getattr(sum, 'has_run', False): return sum.has_run = True return a + b print(sum(100, 100)) # 👉️ 200 print(sum(100, 100)) # 👉️ None
第一个示例使用全局变量仅运行一次函数。
我们将全局变量初始化为
False
并在函数中将其值设置为。 True
如果全局变量的值等于True
,我们直接从函数返回。
主程序
sum_has_run = False def sum(a, b): global sum_has_run if sum_has_run: return sum_has_run = True return a + b print(sum(100, 100)) # 👉️ 200 print(sum(100, 100)) # 👉️ None
如果全局变量的值不等于
True
,我们将其值设置为True
并运行该函数。这只会在函数第一次被调用时发生。
一旦将全局变量设置为True
,该函数将返回None
而不运行任何代码。
另一种方法是在函数上使用属性。
只运行一次函数:
- 将
has_run
函数的属性设置为True
它第一次运行时。 - 每次调用该函数时,检查
has_run
属性是否存在True
并立即返回。 - 函数中的代码只会运行第一次。
主程序
def sum(a, b): if getattr(sum, 'has_run', False): return sum.has_run = True return a + b print(sum(100, 100)) # 👉️ 200 print(sum(100, 100)) # 👉️ None
我们将该has_run
属性设置True
为第一次调用该函数时。
getattr函数返回对象提供的属性的值。
该函数将对象、属性名称和对象上不存在该属性时的默认值作为参数。
如果has_run
未在函数上设置该属性,我们将返回默认值False
。
has_run
每次函数运行时,我们都会检查属性的值,如果它的值设置为True
,我们会立即从函数返回。如果has_run
未设置属性,函数中的代码将运行并将属性设置为True
。
函数中的代码只运行一次。