【问题标题】:Returning items from a function in python从python中的函数返回项目
【发布时间】:2014-01-11 17:34:29
【问题描述】:

如何在这个函数的末尾返回 print 语句下面的注释行?此外,当我在未注释 return 的情况下运行函数时,我得到一个结果,但是当我在 return 注释的情况下运行函数时,我得到 7 个结果,我不确定为什么会这样。

我想做的是在调用函数后调用 track['name'] 。当我这样做时,我收到此错误 Traceback(最近一次调用最后一次): 文件“spot.py”,第 25 行,在 轨道['名称'] NameError: name 'track' 未定义

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)

【问题讨论】:

  • 您要返回所有tracks 还是只返回一个或一个接一个(作为生成器)?
  • 只有一个很好,我只需要第一个匹配。
  • “呼叫跟踪['name']”是什么意思?

标签: python function return


【解决方案1】:

return 语句会导致函数停止执行并返回您指定的值,而 print 语句只会导致将某些内容输出到终端,并且函数会继续执行。

为了使用从函数返回的值,你必须对它做一些事情,比如将它分配给一个变量。例如:

track = decrementList(message)

但在这种情况下,您会想要返回曲目:

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

【讨论】:

  • 好的,谢谢。知道如何使退货工作吗?当我尝试拨打 track['name'] 时出现错误
  • @Barnaby:我已经扩展了我的答案。
  • @VaughnCato 或 return track["name"], track["href"], track_title, num_words_removedname, href, title, nwords_removed = decrementList(message)
猜你喜欢
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
  • 2014-03-18
  • 2017-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多