2014-01-11 4 views
0

이 함수의 끝 부분에있는 print 문 아래에 주석으로 처리 된 줄을 어떻게 반환 할 수 있습니까? 또한 주석이없는 함수를 실행하면 결과가 하나 나오지만 반환 된 함수를 실행하면 결과가 7 개가되어 왜 이런 일이 발생하는지 확신 할 수 없습니다.파이썬의 함수에서 항목 반환하기

함수를 호출 한 후 트랙 [ '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

"통화 추적 [ '이름']"은 무엇을 의미합니까? – 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)'를 작성하십시오. –

관련 문제