Python常量的多个版本

2024-04-29 00:57:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python3编写一个程序来处理几个设备。我必须为每个设备存储常量。有些常量对于所有设备都是通用的,并且是永久固定的,但是有些常量根据设备的固件版本不同而有所不同。我必须为所有版本存储常量,而不仅仅是最后一个版本。请告诉我为不同的设备和它们的多个版本定义常量的Pythonic方法。你知道吗

我当前的解决方案如下所示:

general = {
    'GENERAL_CONST_1': 1,
    'GENERAL_CONST_2': 2,
    ...
    'GENERAL_CONST_N': N
}


device_1 = dict()
device_1[FIRMWARE_VERSION_1] = {
    'DEVICE_1_CONST_1': 1,
    'DEVICE_1_CONST_2': 2,
    ...
    'DEVICE_1_CONST_N': N
}
device_1[FIRMWARE_VERSION_1].update(general)

device_1[FIRMWARE_VERSION_2] = {
    'DEVICE_1_CONST_1': 1,
    'DEVICE_1_CONST_2': 2,
    ...
    'DEVICE_1_CONST_N': N
}
device_1[FIRMWARE_VERSION_2].update(general)


device_2 = dict()
device_2[FIRMWARE_VERSION_1] = {
    'DEVICE_2_CONST_1': 1,
    'DEVICE_2_CONST_2': 2,
    ...
    'DEVICE_2_CONST_N': N
}
device_2[FIRMWARE_VERSION_1].update(general)

device_2[FIRMWARE_VERSION_2] = {
    'DEVICE_2_CONST_1': 1,
    'DEVICE_2_CONST_2': 2,
    ...
    'DEVICE_2_CONST_N': N
}
device_2[FIRMWARE_VERSION_2].update(general)

提前谢谢!或者,如果你能给我指点方向,让我读到上面的内容,我也会很感激的。你知道吗

升级1:

感谢@languitar,我决定使用INI/JSON/YAML/TSON中的一个。。。格式。例如,库python-anyconfig中支持的格式。格式INI(由@languitarconfigparser提出)看起来很适合我的目的(TSON看起来也很有趣),但不幸的是,它们都不支持十六进制值。我很惊讶。但我所有的常量都应该是十六进制格式。然后我决定试试YAML格式。现在,包含常量的文件如下所示:

# General consts for all devices and all versions
general: &general
    GENERAL_CONST_1: 1
    GENERAL_CONST_2: 2
    ...
    GENERAL_CONST_N: N

# Particular consts for device_1 for different firmware version
device_1: &device_1
    <<: *general
    # General consts for device_1 and all firmware versions
    DEVICE_1_CONST_1: 1
device_1:
    FIRMWARE_VERSION_1:
        <<: *device_1
        DEVICE_1_CONST_2: 2
        ...
        DEVICE_1_CONST_N: N
    FIRMWARE_VERSION_2:
        <<: *device_1
        DEVICE_1_CONST_2: 2
        ...
        DEVICE_1_CONST_N: N

# Particular consts for device_2 for different firmware version
device_2: &device_2
    <<: *general
    # General consts for device_2 and all firmware versions
    DEVICE_1_CONST_1: 1
device_2:
    FIRMWARE_VERSION_1:
        <<: *device_2
        DEVICE_1_CONST_2: 2
        ...
        DEVICE_1_CONST_N: N
    FIRMWARE_VERSION_2:
        <<: *device_2
        DEVICE_1_CONST_2: 2
        ...
        DEVICE_1_CONST_N: N

但我不确定,这是否是存储设备及其所有固件版本常量的正确方法


Tags: 版本forversiondevice格式updateallgeneral