为什么请求 return "None"?
Why do requests return "None"?
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')
谁能告诉我为什么返回此代码 "None"
您忽略了递归调用的 return 值。您需要明确 return 那些:
return get(url)
就像您必须处理任何其他类型的函数调用的 return 值一样。
递归在这里并不是最好的解决方案;在尝试检索之前调整 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 参数。
这是一个递归调用,你必须return每个方法调用
return get(url)
那是当你最初调用 get(url)
该方法由于递归调用再次调用 get(url)
因为第一次调用没有 return 任何参数并且在第二次调用之前它将return None 函数的默认 return 参数
您没有 return 递归调用 get()
函数的结果。
您需要 return 递归调用 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')
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')
谁能告诉我为什么返回此代码 "None"
您忽略了递归调用的 return 值。您需要明确 return 那些:
return get(url)
就像您必须处理任何其他类型的函数调用的 return 值一样。
递归在这里并不是最好的解决方案;在尝试检索之前调整 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 参数。
这是一个递归调用,你必须return每个方法调用
return get(url)
那是当你最初调用 get(url)
该方法由于递归调用再次调用 get(url)
因为第一次调用没有 return 任何参数并且在第二次调用之前它将return None 函数的默认 return 参数
您没有 return 递归调用 get()
函数的结果。
您需要 return 递归调用 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')