Соглашение для глобального параметра в модуле python - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть модуль с несколькими функциями построения графиков, и я хочу иметь две цветовые темы, одну - светлую, а другую - темную.

Я говорю, что у меня есть два метода:

def plot_function_1(color_dark='#212121'):
    ...

def plot_function_2(color_dark='#212121'):
    ...

Это кажется излишним.Какой самый питонный способ справиться с этим?Буду ли я определять переменную в модуле COLOR_DARK = '#212121' и затем вызывать:

def plot_function_1(color_dark=COLOR_DARK):
    ...

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Создайте dict цветов и передайте требуемый.

color_dict = {'COLOR_DARK': '#212121', 'COLOR_LIGHT': '#121212'}

def plot_function_1(color):
    print(color)


plot_function_1(color_dict['COLOR_DARK'])

ВЫХОД:

#212121

Другой подход (с использованием enum):

from enum import Enum

class Color(Enum):
    DARK_COLOR = 200
    LIGHT_COLOR = 400
    DARKER_COLOR = 500
    LIGHTER_COLOR = 222

    print(Color.DARK_COLOR.name)
    print(Color.DARK_COLOR.value)

ВЫХОД:

DARK_COLOR
200

Аналогично:

def plot_function_1(color):
    print(color)


plot_function_1(Color.DARK_COLOR.name)    # or use .value if required
0 голосов
/ 12 февраля 2019

Да, ваша идея на пороге.«Соглашение» состоит в том, чтобы перевести ваши значения в переменную.

Если это переменная уровня модуля, вы можете указать это, назвав ее в верхнем регистре, pep-8 вызывает это константы

...