
原始代码:
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 呢?
我瞎猜,是不是内存指针跟不上?
就是前辈们指教一下,什么原因导致的?
1 jyyx 2020-04-21 16:34:50 +08:00 递归那里没有返回, else 里面没有 return 改成 return get_http_ip() |
2 Virace 2020-04-21 16:38:24 +08:00 via Android 马虎 |
3 wzwwzw 2020-04-21 16:39:46 +08:00 递归哪里修改成 return get_http_ip() |
4 smallgoogle OP |
5 U7Q5tLAex2FI0o0g 2020-04-21 16:42:38 +08:00 递归,了解一下递归 答案楼上已经说了 |