为了账号安全,请及时绑定邮箱和手机立即绑定

我应该使用一个类在函数之间共享多个变量吗?

我应该使用一个类在函数之间共享多个变量吗?

智慧大石 2021-10-12 16:03:46
我有一个大函数可以进行多次测量。在函数开始时从数据库和文件中读取参数列表。这些参数中的一些在某种程度上属于一起(例如运动限制),其他的则是分开的。我不想将所有参数都放在一本字典中,即使只是为了挑战它。为了使函数更紧凑、更简洁,我会将所有参数的查询放在一个单独的函数中。但是,我不知道返回多个变量的最佳/正确方法。在搜索我的书籍和 Stack Overflow 时,我找到了以下选项:我可以返回一个包含所有变量的字典,但想知道是否还有另一种方法。全局变量:由于我不在其他地方使用参数,这似乎是不好的做法。返回一个变量元组,但它们不会被命名。我在 Stack Overflow 上找到的大多数答案都建议创建一个类。这会将我的函数变成一个类。所以我想知道,这是否被认为是好的做法:为可以在一个函数中完成的事情创建一个类(只有两个函数)?
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

返回一个元组;在您的调用函数中,您可以使用隐式元组解包

top_limit, bottom_limit, another_value = the_query_function()

在被调用的函数中:

return top_limit, bottom_limit, another_value

非常干净和简单,没有样板

或者你可以像你说的那样使用一个类,这真的取决于手头工作的复杂性

编辑:如果代码从使用类中获利,那么一旦任务 imo 使用作业进行调用就不错了


查看完整回答
反对 回复 2021-10-12
?
SMILET

TA贡献1796条经验 获得超4个赞

对这样一个问题的回答总是取决于复杂性。

但是当你说:

我有一个大函数可以进行多次测量。

这可能是考虑重组的一个迹象。

我总是喜欢让一个函数只做一件简单的事情。 Python之禅教我们“简单胜于复杂”和“复杂胜于复杂”。

在那种情况下,我会使用一个类而不是一个太复杂的函数。

根据经验:如果您的函数或方法超过 20 行代码或返回超过两三个参数,您应该考虑重组。在大多数情况下,您希望该函数成为“万事通”。这些函数有时会爆炸,处理它们变得越来越复杂。


查看完整回答
反对 回复 2021-10-12
?
catspeake

TA贡献1111条经验 获得超0个赞

另一种选择是使用嵌套dicts 按某些标准对参数进行分组。


例如:


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'])

这几乎没有开销(不是整个类)并且仍然具有一定的可读性。


查看完整回答
反对 回复 2021-10-12
  • 3 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信