2014-01-12 40 views
0

我試圖研究一種使用單個返回變量返回多個值的方法。我想要實現的是,我想下面的代碼,如果返回多個值,而不是返回一個元組行動從函數返回多個值的問題

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 

有沒有辦法解決這個問題?

編輯!

我使用這與Python滴滴涕

@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. 測試用例測試值1
  2. 測試用例測試值2
  3. 測試用例測試值3
  4. 測試用例測試值4
+0

你是什麼意思?你有一個問題與parens? – aIKid

+5

'返回1,2,3,4'與'return test_data'完全相同。 – aIKid

回答

0

你問題很混亂Ë輸出你正在努力實現的,但是,

您可以使用list這樣的:

list1 = [1,2,3,4] 

return list1 

,那麼你可以從可變

更多acsess上lists

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 

把一個*函數調用的最後一個參數解壓這樣的說法之前的序列和飼料的序列元素separa該函數的參數。換句話說,

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

相當於

f(1, 2, 3, 4) 

注意,元組通常是固定長度的集合,往往不均勻的數據。如果你有大量的數據,列表通常更合適。