如何编写一个接受" Mode"的Python函数。作为一个论点?

时间:2018-03-13 15:49:32

标签: python arguments processing

我目前正在用Python编写一个调色板生成器。我希望能够输入一个Mode作为一个参数,它将产生一种特定类型的配色方案。像COMPLEMENTARY或PASTEL等。

我见过像colorMode(HSB)和colorMode(RGB)这样的函数,其中一个参数是"模式"。我以前见过这么多次,它们通常都是大写的,IDE通常会以某种方式对它们进行颜色编码。这些模式通常如何存储在函数中?它们是彩色编码的,因为它们是某种类?或者它们是存储为字符串还是数字?

很抱歉,如果这样的问题已经存在,我只是不知道用什么类型的行话来描述这种情况。

3 个答案:

答案 0 :(得分:1)

您可以使用枚举库。例如,创建一个" Mode"就像你想要的那样:

from enum import Enum
class ColorMode(Enum):
    COMPLEMENTARY = 1
    PASTEL = 2

之后您可以使用以下方式访问它:

ColorMode.COMPLEMENTARY

答案 1 :(得分:1)

使用enum module

import enum

class Mode(enum.Enum):
    COMPLEMENTARY = 1
    PASTEL = 2

def colorMode(mode):
    return "using color mode {}".format(mode)

if __name__ == "__main__":
    print(colorMode(Mode.COMPLEMENTARY))
    print(colorMode(Mode.PASTEL))

输出:

using color mode Mode.COMPLEMENTARY
using color mode Mode.PASTEL

答案 2 :(得分:1)

其他答案对于一般开发是正确的,但由于您已使用对其进行了标记,因此我将解释Processing如何做到这一点。

Processing(和Processing.py)不使用枚举值。它只使用int值。

在Java(常规处理)中,只定义了一堆int个变量。这发生了here,但它基本上是这样的:

int RGB = 1;
int ARGB = 2;
int HSB = 3;

因此,无论何时使用其中一个变量,您只需引用这些值。

colorMode(HSB);

这与您键入的内容相同:

colorMode(3);

然后在colorMode()函数内部,Processing执行以下操作:

void colorMode(int mode){
  if(mode == RGB){
    // do something
  }
  else if(mode == HSB){
    // do something else
  }
}

我使用Java作为示例,因为我对它更熟悉,但请注意,这在Processing.py参考here中有所解释:

  

模式 int:RGB或HSB,对应红/绿/蓝和色调/饱和度/亮度

请注意modeint

如果您正在编写自己的代码,那么枚举值可能就是您的选择。但是,如果你在询问Processing如何在内部执行,那么他们会使用int值。