【发布时间】:2013-11-09 09:11:23
【问题描述】:
我有一个函数,它有几个可能的返回值。举个简单的例子,假设它接受一个正整数并返回“小”、“中”或“大”:
def size(x):
if x < 10:
return SMALL
if x < 20:
return MEDIUM
return LARGE
我想知道编写和定义返回值的最佳方式。我想知道使用Python函数属性,如下:
def size(x):
if x < 10:
return size.small
if x < 20:
return size.medium
return size.large
size.small = 1
size.medium = 2
size.large = 3
那么我的调用代码如下所示:
if size(n) == size.small:
...
这似乎是一个不错的内置“枚举”,可能比创建模块级枚举或将 3 个值定义为全局常量(如 SIZE_SMALL, SIZE_MEDIUM 等)更清晰/更简单。但我不认为我以前见过这样的代码。这是一个好方法还是有陷阱/缺点?
【问题讨论】:
-
为什么不使用类?然后您可以返回可以从类外部使用的类变量。这是一个更多的oop。
-
@wim:我没有看到任何关于函数属性的内容。这只是一个关于一般枚举的问题。我问的是实现枚举类型结构的特定技术。
-
这些通常定义为模块/全局变量,因为知识需要处于模块/全局级别,即代码设置中的其他位置。small = var
-
@tk,有效点,但函数
size本身不是私有的,因此它的属性也可以在模块/全局级别访问。 -
因此,如果值的知识严格属于函数,那么您的方式是正确的,但是如果有歧义,我会考虑将其放在其他地方。