为什么请求返回"无"?

时间:2015-07-25 15:33:30

标签: python return python-requests

import requests

def get(url):
    if url[:7] == 'http://':
        if url[7:11] == 'www.':
            print url
            response = requests.get(url)
            if response.status_code == 200:
                return 'ok'

            else:
                return 'error'
        else:
            print(url)
            url = 'http://www.' + url[7:]
            get(url)
    else:
        print(url)
        url = 'http://' + url
        get(url)

print get('example.com')

任何人都可以告诉我为什么这段代码会返回"无"

3 个答案:

答案 0 :(得分:3)

您没有将结果从递归调用返回int i = 1; foreach (var item in labels.Controls) { if (item is Label) { ((Label)item).Text = "Home" + i; i++; } } 函数。

您需要将递归调用的结果返回到get()函数,例如 -

导入请求

get()

答案 1 :(得分:2)

您忽略了递归调用的返回值。你需要明确地返回那些:

return get(url)

就像你必须处理任何其他类型的函数调用的返回值一样。

递归在这里并不是最好的解决方案;只需在尝试检索URL之前调整URL:

def get(url):
    if not url.startswith('http://'):
        url = 'http://' + url
    if not url.startswith('http://www.'):
        url = 'http://www.' + url[7:]

    response = requests.get(url)
    if response.status_code == 200:
        return 'ok'
    else:
        return 'error'

或者更好的是,使用urlparse library更新网址参数。

答案 2 :(得分:0)

这是一个递归调用,你必须返回每个方法调用

127.0.0.1  localhost.localdomain localhost
127.0.1.1  mail
127.0.1.2  X7
127.0.122.1 space

192.168.125.7   mail.faron.ca
192.168.7.127   X7.faron.ca  faron.ca  cloud.faron.ca  faronhost.ca 
192.168.122.1   space.faron.ca   # this is virtual bridge LAN

 # The following lines are desirable for IPv6 capable hosts
 ::1     localhost ip6-localhost ip6-loopback
 ff02::1 ip6-allnodes
 ff02::2 ip6-allrouters

当你最初调用return get(url) 时,该方法再次调用get(url)由于递归调用SInce第一次调用没有返回任何参数,并且在第二次调用之前它将返回None默认返回参数功能