【问题标题】:Use unknown number of variables to place the returns of a method使用未知数量的变量来放置方法的返回
【发布时间】:2023-03-07 07:06:02
【问题描述】:

我有一个方法__some_method,它可能返回一个参数、两个参数或任何数字。我想在另一个方法中调用这个方法并将返回值放入变量中,就像这样

var1, var2 ... varN = self.__some_method()

有没有什么方法可以做到这一点,在一个非常通用的设置中,它适用于任意数量的返回参数?

【问题讨论】:

  • 听起来是开始学习数组的好地方:i-programmer.info/programming/python/3942-arrays-in-python.html
  • 使用神奇的dictionary来解决这个问题。
  • 我考虑过数组,但我不确定它是否是解决我问题的最佳选择。我想知道是否还有其他方法可以工作。
  • 返回一个元组。它将被解压缩到您的变量中。您必须小心,如果参数的数量与变量的数量不匹配,就会出现异常。数组在python中有一个很specific的意思,上面提到的通用数据结构是list。
  • 如果你有未知数量的返回值,为什么不使用元组/列表呢? var = self.__some_method()(请注意,您几乎可以肯定不应该使用两个下划线,不确定您从哪里得到这个想法)。是什么让您不确定这是最佳选择?返回值代表什么?为什么不知道会有多少?如果没有上下文,只需使用一个列表,不要再浪费时间思考了。

标签: python oop methods


【解决方案1】:

我仍然认为字典是解决您正在尝试做的事情的最佳方式。但是,这不言而喻,您可能应该修改为什么您有一个可以返回不确定数量的变量的函数。这似乎是一个糟糕的决定。至少应该在数据结构中收集返回值,这样您就知道您将有一个返回类型,您可以自己处理其中的内容。

话虽如此。如果您正在寻找某种方式来将names 分配给这些将返回的单个变量,则可以使用字典来控制它。这是一个例子:

def foo(*args):
    return args


result = foo(1, 2, 3, 4, 5, 6, 7, 8)
var_pack = {'var_{}'.format(idx): data for idx, data in enumerate(result, 1)}

print(var_pack)
# {'var_7': 7, 'var_4': 4, 'var_8': 8, 'var_2': 2, 'var_3': 3, 'var_6': 6, 'var_1': 1, 'var_5': 5}

print(var_pack['var_8'])
# 8

【讨论】:

    猜你喜欢
    • 2017-07-04
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 2015-06-21
    • 1970-01-01
    • 2019-02-08
    • 2015-12-16
    相关资源
    最近更新 更多