从函数返回多个值时出现问题

2024-04-16 15:08:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我得到的是:

^{pr2}$

我希望函数像执行以下代码一样工作:

^{3}$

有办法吗?在

编辑!在

我在pythonddt中使用这个

@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),而我得到的是元组值,而不是这四个数字。但是当我

^{3}$

输出将有四个测试用例:

  1. 测试用例测试值1
  2. 测试用例测试值2
  3. 测试用例测试值3
  4. 测试用例测试值4

Tags: of方法代码testnumberdataherevalue
2条回答

你的问题让你很困惑你想要达到的结果,但是

您可以使用这样的list

list1 = [1,2,3,4]

return list1

然后可以从on变量获取这些值

关于lists的更多信息

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

return 1, 2, 3, 4

实际上创建一个元组并返回它。完全一样

^{pr2}$

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

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

您需要做的是用^{} notation在decorator调用中解压元组:

@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)

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

相关问题 更多 >