2014-01-11 77 views
0

如何在此函數結束時返回print語句下方的註釋掉的行?另外,當我使用返回未註釋的函數運行函數時,我得到一個結果,但是當我使用返回註釋運行該函數時,我得到7個結果,我不確定爲什麼會發生這種情況。從python中的函數返回項目

我想要做的是在我調用該函數後調用track ['name']。當我這樣做,我得到這個錯誤回溯(最近通話最後一個): 文件「spot.py」 25行,在 軌道[「名」] NameError:名字「軌道」沒有定義

import requests 
import json 

message = "if i can\'t let it go out of my mind".split() 
size = len(message) 

def decrementList(words): 
    for w in [words] + [words[:-x] for x in range(1,len(words))]: 
     url = 'http://ws.spotify.com/search/1/track.json?q=' 
     request = requests.get(url + "%20".join(w)) 

     json_dict = json.loads(request.content) 
     track_title = ' '.join(w) 
     num_words_removed = len(words) - len(w) 
     new_message_length = size - num_words_removed 
     new_message = message[new_message_length:size] 

     for track in json_dict["tracks"]: 
      if track["name"].lower() == track_title.lower(): 
       print track["name"], " | ", track["href"], " | ", track_title, " | ", num_words_removed 
       #return track["name"], track["href"], track_title, num_words_removed 


decrementList(message) 
+0

你想返回所有'track's或相繼只有一個或一個(如發電機) ? – Nabla

+0

只有一個很好,我只需要第一場比賽。 – metersk

+0

「call tr​​ack ['name']」是什麼意思? – martineau

回答

1

return語句會導致函數停止執行並返回您指定的值,而使用print語句只會導致將某些內容輸出到終端,並且該函數將繼續執行。

爲了使用從函數返回的值,必須對它做某些事情,比如將其分配給一個變量。例如:

track = decrementList(message) 

,但在這種情況下,你會想回到賽道:

for track in json_dict["tracks"]: 
     if track["name"].lower() == track_title.lower(): 
      return track 
+0

好的謝謝。任何想法如何我可以使返回工作?當我嘗試打電話給'track ['name']'我得到一個錯誤 – metersk

+0

@Barnaby:我已經擴展了我的答案。 –

+0

@VaughnCato或做'return track [「name」],track [「href」],track_title,num_words_removed'和'name,href,title,nwords_removed = decrementList(message)' –