我尝试使用单一返回变量研究返回多个值的方法。我想要实现的是,我希望下面的代码就好像它返回多个值而不是返回一个元组
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
输出将有四个测试用例:
答案 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)