python模块中全局参数的约定

问题描述 投票:1回答:2

我有一个带有几个绘图功能的模块,我想要有两个颜色主题,一个是浅色,另一个是深色。

我说我有两种方法:

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

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

这感觉有点多余。什么是最pythonic方式来处理这个?我会在模块COLOR_DARK = '#212121'中定义一个变量然后调用:

def plot_function_1(color_dark=COLOR_DARK):
    ...
python module global-variables
2个回答
1
投票

创建一个颜色的dict并传递所需的颜色。

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

def plot_function_1(color):
    print(color)


plot_function_1(color_dict['COLOR_DARK'])

OUTPUT:

#212121

另一种方法(使用枚举):

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)

OUTPUT:

DARK_COLOR
200

同理:

def plot_function_1(color):
    print(color)


plot_function_1(Color.DARK_COLOR.name)    # or use .value if required

1
投票

是的,你的想法很重要。 “惯例”是将你的价值提升到变数。

如果这是模块级变量,你可以通过大写命名来表明这一点,pep-8调用这个constants

© www.soinside.com 2019 - 2024. All rights reserved.