我想将我的时间序列数据与给定文件中的元数据进行匹配。
在我的代码中,主函数调用" create_match()"每1分钟一次。在" create_match()中,有一个" list_from_file()"函数从文件读取数据并存储在列表中以执行匹配。
问题是我的代码每1分钟无效,它会读取文件并在同一列表中重写。我想只读一次文件(只初始化列表一次),然后忽略" list_from_file()"功能。我不想将此任务移动到main函数并通过函数传递列表。
python在c编程中是否有像静态变量这样的特殊变量?
答案 0 :(得分:3)
Python没有静态变量声明;但是,python中有几个相当标准的编程模式可以做类似的事情。最简单的方法是使用全局变量。
定义一个全局变量并在运行初始化函数之前检查它。如果已经设置了全局变量(即您正在读取的列表),则只需返回它们。
CACHE = None
def function():
global CACHE
if CACHE is None:
CACHE = initialize_function()
return CACHE
答案 1 :(得分:1)
有很多方法。
您可以创建类的变量部分 - 不是对象的成员,而是类本身的成员。它在定义类时初始化。
同样,您可以将变量放在模块的外层。它将属于该模块,并将在第一次导入模块时进行初始化。
最后,将对象定义为函数的默认参数是一种黑客攻击。定义函数时,变量将被初始化,并且属于该函数。您只能使用参数名称访问它,并且调用者可以覆盖它。
答案 2 :(得分:1)
您可以使用课程:
class Match (object):
def __init__(self):
self.data = list_from_file()
def create_match(self):
# do something with `self.data` here
制作一个实例:
match = Match()
这会调用list_from_file()
。
现在,您可以反复拨打create_match()
并访问self.data
import time
for x in range(10):
match.create_match()
time.sleep(60)