所以我在尝试合并这些 Python 列表时遇到了一些问题。我正在尝试编写一个算法来检查机器是否连接到互联网。所以我 ping 不同的 Google 服务器,如果它们都没有响应,我假设机器处于离线状态。
我用来 ping 服务器的脚本是我对另一个脚本的重写,可以在此处找到。该echo()
函数发送一个 ping 并返回响应延迟(以秒为单位)或者None
如果它失败。这些recursive()
函数发送多个 ping 并返回一个包含来自echo()
(例如[0.054, 0.134, None, 0.037]
)响应的列表。
该recursive
函数(缺少文档字符串和一些乏味的评论):
def recursive(dest_addr, count=4, timeout=1, verbose=False):
if verbose:
print("PING {} ; SEQUENCE {} ; TIMEOUT {}s".format(dest_addr, count, timeout))
nrc = 0
log = []
for i in xrange(count):
log.append(echo(dest_addr, timeout))
if verbose:
if log[-1] is None:
print("Echo Request Failed...")
nrc += 1
else:
print("Echo Received: sequence_id={} delay={} ms").format(i, round(log[-1]*1000, 3))
return log
因此,当我 ping 这些服务器时,我会得到多个列表,并尝试像这样合并它们:
results = recursive("google.ca") # North America
results = results.extend(recursive("google.com.br")) # South America
这样做会使我出现以下错误:
AttributeError: 'NoneType' object has no attribute 'extend'
我想知道为什么会这样。
提前致谢。