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

时间:2016-01-10 14:51:55

标签: python-3.x

for _ in range(10):
    try:
         next_results = search_results['search_metadata']['next_results']
    except KeyError or e:
        break
    kwargs = dict([ kv.split('=')
                    for kv in next_results[1:].split("&") ])

    search_results = twitter_api.search.tweets(**kwargs)
    statuses += search_results['statuses']
    if len(statuses) > max_results:
        break

q = "CrossFit"

results = twitter_search(twitter_api, q, max_results=10)

print (json.dumps(statuses[0], indent=1))

1 个答案:

答案 0 :(得分:1)

发布的代码不是您运行的代码,因为search_results未定义,执行将停在那里。根据您发布的内容,我的猜测是max_results在执行len(statuses) > max_results时未定义。在原始代码中,循环必须在函数定义中。只有在任何赋值之前使用函数中的名称(因为它是赋值目标而定义为本地名称)时,才会出现错误消息。例如:

>>> def f():
    if True: return y
    else: y = 1

>>> f()
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    f()
  File "<pyshell#10>", line 2, in f
    if True: return y
UnboundLocalError: local variable 'y' referenced before assignment

请阅读此SO mcve帮助页面并采取相应行动。你发布的内容既不完整又过于完整(if语句之后的所有内容都是多余的)。