python模块中全局参数的约定

时间:2019-02-12 12:39:47

标签: python module global-variables

我有一个具有多个绘图功能的模块,我想有两个颜色主题,一个主题为浅色,另一个为深色。

我说我有两种方法:

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 :(得分:1)

是的,您的想法是正确的。 “常规”是将您的值上调为变量。

如果这是模块级变量,则可以通过将其命名为大写来表示,pep-8将此称为constants

答案 1 :(得分:1)

创建<ItemsControl x:Class="Miotec.PressureMapping.UserControls.BaroLayerContainer" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Miotec.PressureMapping.UserControls" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> <ItemsControl.Template> <ControlTemplate TargetType="ItemsControl"> <Grid x:Name="container"> <Viewbox Stretch="Uniform" Width="{Binding ActualWidth, ElementName=container}" Height="{Binding ActualHeight, ElementName=container}"> <ItemsPresenter/> </Viewbox> </Grid> </ControlTemplate> </ItemsControl.Template> <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Canvas Width="{Binding Parametros.Colunas}" Height="{Binding Parametros.Linhas}" IsItemsHost="True"/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> </ItemsControl> 的颜色并传递所需的颜色。

dict

输出:

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

def plot_function_1(color):
    print(color)


plot_function_1(color_dict['COLOR_DARK'])

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

#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)

类似地:

DARK_COLOR
200