将参数限制为python中的特定值

时间:2014-03-15 00:36:15

标签: python

如果我的python函数带有一个需要在特定值列表中的字符串参数,那么处理这个问题的最佳方法是什么?是否存在在文档字符串中表达此内容的约定?

例如

def makeShape(shape):
   assert shape in ["circle", "square", "triangle"]

有没有更好的方式来表达形状应该始终是这三个值中的一个?

2 个答案:

答案 0 :(得分:10)

您可以使用enum来获得正确的形状:

class rightShape(Enum):
    circle = 1
    square = 2
    triangle = 3

def makeShape(rightShape):
    # code in function

如果您尝试将函数传递给circlesquaretriangle,则会产生诚实至善的错误。

答案 1 :(得分:1)

如果这是真正的错误,您应该提出异常。我认为TypeError是一个合理的选择,但您可能想要定义自己的。

assert语句用于开发。请注意,使用-O参数时会忽略它们,因此不应依赖它们来捕获错误。