python:无论如何只能初始化一次变量吗?

kat*_*tja 3 python python-2.7

我想将我的时间序列数据与给定文件中的元数据进行匹配。

在我的代码中,主函数每 1 分钟调用一次“create_match()”函数。在“create_match()”内部,有一个“list_from_file()”函数可以从文件中读取数据并存储在列表中以执行匹配。

问题是我的代码无效,因为它每 1 分钟读取一次文件并在相同的列表中重写。我只想读取文件一次(只初始化列表一次),然后忽略“list_from_file()”函数。我不想只是将此任务移至主函数并通过函数传递列表。

python在c编程中是否有像静态变量这样的特殊变量?

Bre*_*bel 10

Python 没有静态变量声明;然而,python 中有几个相当标准的编程模式可以做类似的事情。最简单的方法是只使用全局变量。

全局变量

定义一个全局变量并在运行初始化函数之前检查它。如果已经设置了全局变量(即您正在阅读的列表),只需返回它们。

CACHE = None

def function():
    global CACHE
    if CACHE is None:
        CACHE = initialize_function()
    return CACHE
Run Code Online (Sandbox Code Playgroud)


Mik*_*ler 3

您可以使用一个类:

class Match (object):
    def __init__(self):
        self.data = list_from_file()
    def create_match(self):
        # do something with `self.data` here
Run Code Online (Sandbox Code Playgroud)

举个例子:

match = Match()
Run Code Online (Sandbox Code Playgroud)

这叫list_from_file().

现在,您可以create_match()重复调用并访问self.data

import time
for x in range(10):
    match.create_match()
    time.sleep(60)
Run Code Online (Sandbox Code Playgroud)