UnboundLocalError:赋值前引用的局部变量'url'

时间:2015-04-07 17:31:14

标签: python python-3.x

我试图让这段代码正常工作,但它不断出现标题中的错误。我不明白。功能" url"在" get_media"之前设置函数和相同的函数调用函数与我设置的其他函数一起工作,但它说不然。我已经查看了类似问题的答案,但我无法理解其中的任何一个,因为答案是围绕其复杂的代码设计的,并且它们没有提供关于其工作原理的正确解释。

def url(path):
    if path.find("?") != -1:
        pre = "&"
    else:
        pre = "?"
    return protocol +"://" +host +base_path +path +pre +"access_token=" +access_token

def get_media(insta_id, max_id=None):
    insta_id = str(insta_id)
    path = url("/users/%s/media/recent/") # ERROR COMES UP HERE
    if max_id is not None:
        path = path +"&max_id=%s" % max_id
    url = urllib.request.urlopen(path)
    url = url.read().decode("utf-8")
    url = json.loads(url)
    return url

任何帮助表示赞赏。如果您需要更多代码,请告诉我。

1 个答案:

答案 0 :(得分:1)

稍后在函数中指定一个名为“url”的局部变量。因此,Python将对该函数中“url”的每个引用视为本地。但是当然你还没有定义那个局部变量,因此就是错误。

为本地“url”变量使用其他名称。 (无论如何,它永远不是一个URL,所以你绝对应该使用一个更好的名字。)