Почему рекурсивная функция python3 возвращает ноль

Frankenmint спросил: 07 октября 2018 в 11:37 в: python-3.x

У меня есть эта функция, которая при достижении ограничения скорости будет вызывать себя снова. Это должно в конечном итоге успешно и вернуть рабочие данные. Он работает нормально, затем ограничение скорости работает, как и ожидалось, и, наконец, когда данные возвращаются в нормальное состояние, я получаю:

TypeError: объект 'NoneType' не может быть подписан

def grabPks(pageNum):
    # cloudflare blocks bots...use scraper library to get around this or build your own logic to store and use a manually generated cloudflare session cookie... I don't care ?    req = scraper.get("sumurl.com/"+str(pageNum)).content
    if(req == b'Rate Limit Exceeded'):
        print("adjust the rate limiting because they're blocking us :(")
        manPenalty = napLength * 3
        print("manually sleeping for {} seconds".format(manPenalty))
        time.sleep(manPenalty)
        print("okay let's try again... NOW SERVING {}".format(pageNum))
        grabPks(pageNum)
    else:
        tree = html.fromstring(req)
        pk = tree.xpath("/path/small/text()")
        resCmpress = tree.xpath("path/a//text()")
        resXtend = tree.xpath("[path/td[2]/small/a//text()")
        balance = tree.xpath("path/font//text()")
        return pk, resCmpress, resXtend, balance

Я пытался переместить возврат за пределы области else, но затем он выдает:

UnboundLocalError: локальная переменная 'pk', на которую ссылается перед присваиванием

0 ответов