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')
任何人都可以告诉我为什么这段代码会返回"无"
答案 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默认返回参数功能