gpt4 book ai didi

遍历导入常量的 Pythonic 方式

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:44 25 4
gpt4 key购买 nike

我正在从我的文件 constants.py 中导入一些常量,如下所示:

from constants import (SOME_CONST, OTHER_CONST, ANOTHER_ONE)

这个常量是文件名,我正在从中读取数据,我想要实现的是:

for filename in [SOME_CONST, OTHER_CONST, ANOTHER_ONE]:
# process file

常量.py

SOME_CONST = "filename.txt"
OTHER_CONST = "myfile.xml"
ANOTHER_ONE = "file.csv"

但我想知道是否有一种方法可以避免在 for 中声明列表,例如遍历或构建导入常量列表,因为可以有很多常量,而不是像示例中的 3 个,而且容易出错,因为我需要导入常量并将其添加到列表中,所以我只想导入它并使用导入的任何内容。

最佳答案

你不能列出“所有导入的常量”,不。它们只是您当前模块中的更多全局变量。

您的选择是:

  1. 列出constants 模块中的所有名称:

    import constants

    for name in dir(constants):
    const = getattr(constants, name)

    您可以过滤那些遵循某种模式的名称:

    for name in dir(constants):
    if name.startswith('FOO_'):

    过滤器可以很简单,例如检查名称是否全部大写。

  2. 将列表声明为您的常量模块的一部分,然后导入那个

  3. 在您当前的模块中声明一个名称列表,并使用它来“导入”您的常量:

    import constants

    const_names = ['SOME_CONST', 'OTHER_CONST', 'ANOTHER_ONE']
    for const_name in const_names:
    const = getattr(constants, const_name)

关于遍历导入常量的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24042973/

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