2014-01-11 78 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)' –