【问题标题】:Why do requests return "None"?为什么请求返回“无”?
【发布时间】:2015-07-25 15:33:29
【问题描述】:
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')

谁能告诉我为什么这段代码返回“无”

【问题讨论】:

  • 欢迎来到stackoverflow。如果您使用更具描述性的标题并将您的问题包含在问题本身中,您的问题将会得到更好的答复。

标签: python return python-requests


【解决方案1】:

您没有返回对 get() 函数的递归调用的结果。

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

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:]
            return get(url)
    else:
        print(url)
        url = 'http://' + url
        return get(url)

print get('example.com')

【讨论】:

    【解决方案2】:

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

    return get(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 更新 url 参数。

    【讨论】:

      【解决方案3】:

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

      return get(url)
      

      也就是说,当您最初调用 get(url) 时,由于递归调用,该方法再次调用 get(url) SInce 第一次调用没有返回任何参数并且在第二次调用之前它将返回 None 函数的默认返回参数

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-27
        • 1970-01-01
        • 1970-01-01
        • 2017-04-04
        • 2014-11-26
        • 2017-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多