原始代码:

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 呢?

我瞎猜,是不是内存指针跟不上?

就是前辈们指教一下,什么原因导致的?

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐