каков стандартный способ совместного использования таких констант?
Во всей стандартной библиотеке наиболее распространенным способом является определение констант как переменных уровня модуля с использованием имен UPPER_CASE_WITH_UNDERSCORES.
Как правильно создать константы, которые можно комбинировать?Я имею в виду MAP_FIXED |MAP_FILE |Код стиля MAP_SHARED, который допускает C.
Применяются те же правила, что и в C.Вы должны убедиться, что каждое постоянное значение соответствует одному уникальному биту, то есть степени 2 (2, 4, 8, 16, ...).
В большинстве случаев люди используют шестнадцатеричные числадля этого:
OPTION_A = 0x01
OPTION_B = 0x02
OPTION_C = 0x04
OPTION_D = 0x08
OPTION_E = 0x10
# ...
Некоторые предпочитают более понятный человеку стиль, вычисляя значения констант динамически, используя операторы сдвига:
OPTION_A = 1 << 0
OPTION_B = 1 << 1
OPTION_C = 1 << 2
# ...
В Python вы также можете использовать двоичную нотацию дляэто еще более очевидно:
OPTION_A = 0b00000001
OPTION_B = 0b00000010
OPTION_C = 0b00000100
OPTION_D = 0b00001000
Но так как эта запись длинна и трудна для чтения, использование шестнадцатеричной или двоичной записи сдвига, вероятно, предпочтительнее.