我有一项重要功能,可以进行多种测量。函数开始时从数据库和文件中读取参数列表。这些参数中的一些在某种程度上属于一起(例如运动极限),其他则是分开的。我不希望将所有参数都放在一个字典中,即使只是为了挑战它。
为了使函数更紧凑和更混乱,我将所有参数的查询放在单独的函数中。但是,我不知道返回多个变量的最佳/正确方法。
搜索书籍和堆栈溢出时,我发现以下选项:
所以我想知道,这是否被认为是一种好习惯:为一个可以在单个函数中完成的事情创建一个类(只有两个函数)?
答案 0 :(得分:1)
返回一个元组;在调用函数中,您可以使用隐式元组拆包
top_limit, bottom_limit, another_value = the_query_function()
在被调用函数内部:
return top_limit, bottom_limit, another_value
非常干净和容易,没有样板
或者您可以使用您所说的类,这实际上取决于手头工作的复杂性
编辑:如果代码从使用类中获利,那么一旦任务imo的使用就可以使用作业进行呼叫
答案 1 :(得分:1)
这个问题的答案总是取决于复杂性。
但是当你说:
我有一项重要功能,可以进行多种测量。
这可能是考虑进行重组的指示。
我总是喜欢让一个功能只做一件简单的事情。 Zen of Python教我们“简单胜于复杂”和“复杂胜于复杂”。
在那种情况下,我将使用类而不是过于复杂的函数。
根据经验:如果您的函数或方法超过20行代码或返回两个或三个以上参数,则应考虑进行重组。 在大多数情况下,您希望该功能成为“万事通”。这些功能有时会爆炸,处理起来也越来越复杂。
答案 2 :(得分:0)
另一种选择是使用嵌套的dict
来按某些条件对参数进行分组。
例如:
d = {
'movement_limits': {
'top': 5,
'bottom': 1,
},
'window_size': {
'height': 10,
'width': 10,
},
'num_players': 9,
}
并像这样访问它:
print(d['window_size']['height'])
print(d['movement_limits']['top'])
这几乎没有开销(不是整个类),并且仍然有些可读性。