gpt4 book ai didi

python - 在 Python 中初始化全局变量的正确方法

转载 作者:太空狗 更新时间:2023-10-30 00:55:51 26 4
gpt4 key购买 nike

我有一个初始化一些全局变量的 Python 模块;像这样:

#!/usr/bin/env python
import re

"""My awesome python library."""

# A word list from the standard UNIX dictionary.
with open('/usr/share/dict/words', 'rt') as f:
WORDS_LIST = f.read().split('\n') + ['http'] + ['fubob']

# Some compiled regular expressions.
COMPILED_REG1 = re.compile("a")
COMPILED_REG2 = re.compile("b")

# Some constants.
A = 10
B = 20

def say_hello(): print('hello')
def do_something(): return 'something'

当然可以,但我觉得这不是正确的方法:每次我导入这个模块时,Python 都会执行它。在此示例中,它将读取文件并编译正则表达式。

我读到有些人创建了一个 config.py 文件并用它做了一些事情,但我不知道这是如何工作的。

所以,我想知道如果你必须制作一个标准的 Python 库,你会如何处理这个问题。

最佳答案

every time I import this module Python is going to execute it

这是不正确的。 Python 执行您的模块全局变量仅一次,即第一次导入时。然后将生成的模块对象存储在 sys.modules 中,并重新用于后续导入。查看import statement documenation :

Once the name of the module is known (unless otherwise specified, the term “module” will refer to both packages and modules), searching for the module or package can begin. The first place checked is sys.modules, the cache of all modules that have been imported previously. If the module is found there then it is used in step (2) of import.

您正在做的是正确的方法,也正是标准 Python 库模块所做的。

关于python - 在 Python 中初始化全局变量的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23890121/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com