在 Python 中只运行一次函数
要想只运行一次函数:
- 声明一个全局变量并将其初始化为 False。
- 在函数中将全局变量的值更改为 True。
- 仅当全局变量设置为 False 时才运行函数中的代码。
# ✅ 只运行一次函数 (使用全局变量)
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
# ----------------------------
# ✅ 只运行一次函数 (在函数上使用属性)
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。
函数中的代码只运行一次。
相关文章
Python for 循环中的下一项
发布时间:2023/04/26 浏览次数:179 分类:Python
-
本文讨论了 Python 中的 for 循环以及如何通过使用 for 循环和示例来跳过列表的第一个元素。
Python While 循环用户输入
发布时间:2023/04/26 浏览次数:148 分类:Python
-
我们可以在 while 循环中使用 input() 函数来输入数据,直到在 Python 中满足某个条件。
在 Python 中将整数转换为罗马数字
发布时间:2023/04/26 浏览次数:87 分类:Python
-
本篇文章将介绍在 Python 中将整数转换为罗马数字。以下是一个 Python 程序的实现,它将给定的整数转换为其等效的罗马数字。
在 Python 中将罗马数字转换为整数
发布时间:2023/04/26 浏览次数:144 分类:Python
-
本文讨论如何在 Python 中将罗马数字转换为整数。 我们将使用 Python if 语句来执行此操作。 我们还将探讨在 Python 中将罗马数字更改为整数的更多方法。
在 Python 中读取 gzip 文件
发布时间:2023/04/26 浏览次数:70 分类:Python
-
本篇文章强调了压缩文件的重要性,并演示了如何在 Python 中使用 gzip 进行压缩和解压缩。
在 Python 中锁定文件
发布时间:2023/04/26 浏览次数:141 分类:Python
-
本文解释了为什么在 Python 中锁定文件很重要。 这讨论了当两个进程在没有锁的情况下与共享资源交互时会发生什么的示例,为什么在放置锁之前知道文件状态很重要,等等
在 Python 中将 PDF 转换为文本
发布时间:2023/04/26 浏览次数:196 分类:Python
-
在本教程中,我们将学习如何使用 Python 使用 PyPDF2、Aspose 和 PDFminer 将 PDF 文档转换为文本文件。
在 Python 中创建临时文件
发布时间:2023/04/26 浏览次数:53 分类:Python
-
本文讲解了tempfile库函数的四个子函数:TemporaryFile、NamedTemporaryFile、mkstemp、TemporaryDirectory。 每个部分都提供了适当的程序,以简化对概念的理解。