在Python中确保代码只执行一次的核心方法包括:使用全局变量标记、装饰器封装、单例模式设计,以及模块级变量控制。 这些方法能有效避免重复执行,适用于函数、类或独立代码块场景,尤其适合初始化操作或资源加载等需严格单次执行的逻辑。
- 全局变量标记法:通过布尔变量记录执行状态,简单直接但需注意全局作用域污染。例如:
python复制executed = False
if not executed:
print("仅执行一次")
executed = True
- 装饰器封装:通过闭包保存状态,优雅复用且不侵入业务逻辑。例如:
python复制def run_once(func):
executed = False
def wrapper(*args, **kwargs):
nonlocal executed
if not executed:
executed = True
return func(*args, **kwargs)
return wrapper
- 单例模式:通过类变量或
__new__
控制实例化,确保类级别唯一性。例如:
python复制class Singleton:
_instance = None
def __new__(cls):
if not cls._instance:
cls._instance = super().__new__(cls)
print("初始化仅一次")
return cls._instance
- 模块级变量:利用Python模块天然单例特性,导入时执行一次。例如:
python复制# module.py
if 'initialized' not in globals():
print("模块加载时执行")
initialized = True
总结:根据场景选择合适方法——简单逻辑用全局变量,复杂复用选装饰器或单例,多线程需加锁保证安全。始终优先考虑代码可读性与维护性。