在 Python 中只运行一次函数

在 Python 中只运行一次函数

Run a Function only Once in Python

只运行一次函数:

  1. 声明一个全局变量并将其初始化为False.
  2. 在函数中将全局变量的值更改为True
  3. 如果全局变量设置为 ,则仅运行函数中的代码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而不运行任何代码。

另一种方法是在函数上使用属性。

只运行一次函数:

  1. has_run函数的属性设置为True它第一次运行时。
  2. 每次调用该函数时,检查has_run属性是否存在True
    并立即返回。
  3. 函数中的代码只会运行第一次。
主程序
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

函数中的代码只运行一次。

发表评论