从函数返回多个值的麻烦

时间:2014-01-12 06:19:09

标签: python

我尝试使用单一返回变量研究返回多个值的方法。我想要实现的是,我希望下面的代码就好像它返回多个值而不是返回一个元组

def my_data:
    test_data = 1, 2, 3, 4 # etc (i have a LOT of data here)
    return test_data

我得到的是以下内容:

  td = my_data()
  print td
  output : (1,2,3,4)

我希望该函数能够执行以下代码:

return 1,2,3,4

有没有办法解决这个问题?

EDIT!

我正在使用python ddt

@ddt
class testsuite_my_function_validations(unittest.TestCase):

    @data(my_data())
    def test_various_number(self, value):
        test_number = value
        # test the number

假设有四个测试数据(1,2,3和4)而不是我得到一个元组值而不是那四个数字。但是当我

return 1,2,3,4

输出将有四个测试用例:

  1. testcase test value 1
  2. testcase test value 2
  3. testcase test value 3
  4. testcase test value 4

2 个答案:

答案 0 :(得分:6)

返回多个返回值,如下所示:

return 1, 2, 3, 4

实际创建一个元组并返回它。它与

完全相同
test_data = 1, 2, 3, 4
return test_data

在这两种情况下,您都可以将返回的元组存储在变量中或解压缩它:

def my_data():
    test_data = 1, 2, 3, 4
    return test_data
a, b, c, d = my_data()

您需要做的是使用* notation在装饰器调用中解压缩元组:

@ddt
class testsuite_my_function_validations(unittest.TestCase):
#         v this star here
    @data(*my_data())
    def test_various_number(self, value):
        test_number = value
        # test the number

在函数调用的最后一个参数之前放置*将该参数解包为序列,并将序列元素作为单独的参数提供给函数。换句话说,

f(1, *(2, 3, 4))

相当于

f(1, 2, 3, 4)

请注意,元组通常用于固定长度的集合,通常是非均匀数据。如果您有大量数据,列表通常更合适。

答案 1 :(得分:0)

你的问题是你想要实现的输出令人困惑但是,

你可以像这样使用list

list1 = [1,2,3,4]

return list1

然后你可以从变量

中获取这些值

更多关于lists