原始代码:
def get_http_ip():
    res = requests.get('http://www.xxx.com')
    res = json.loads(res.text)
    if res['code'] == 200:
        print(res['data'])    # 这里打印结果都还是正常的
        time.sleep(5)    # 我猜有可能有人说太快了,那么我这里给一个定时器。
        # 我猜,肯定有人说你在这写一个变量先赋值一下,然后再把变量返回出去
        # 我当然试过了,结果依然是一样的,一样会出现 None
        return res['data']
    else:
        time.sleep(1)
        get_http_ip()
def start():
    info = get_http_ip()
    print(info)    # 这个位置有些时候会打印出 None,这是为啥呢?
if __name__ == '__main__':
    start()
修正的代码:
ip_list = ''
def get_http_ip():
    global ip_list
    res = requests.get('http://www.xxx.com')
    res = json.loads(res.text)
    if res['code'] == 200:
        ip_list = res['data']    # 我把结果赋值给全局变量
        return res['data']
    else:
        time.sleep(1)
        get_http_ip()
def start():
    global ip_list
    info = get_http_ip()
    if info == None:    # 我这里写一个判断如果返回 None 我就用全局变量赋值
        info = ip_list
    print(info)
if __name__ == '__main__':
    start()
那么问题来了,为啥我第一个办法有些时候会返回 None 呢?
我瞎猜,是不是内存指针跟不上?
就是前辈们指教一下,什么原因导致的?
|      1jyyx      2020-04-21 16:34:50 +08:00 递归那里没有返回, else 里面没有 return 改成 return get_http_ip() | 
|  |      2Virace      2020-04-21 16:38:24 +08:00 via Android 马虎 | 
|  |      3wzwwzw      2020-04-21 16:39:46 +08:00 递归哪里修改成 return get_http_ip() | 
|  |      4smallgoogle OP | 
|  |      5U7Q5tLAex2FI0o0g      2020-04-21 16:42:38 +08:00 递归,了解一下递归 答案楼上已经说了 |