我有一个小函数来循环ipaddresses列表并对它们进行dns查找。
def lookup(addr):
try:
x = socket.gethostbyaddr(addr)
return
except socket.herror:
x = addr
print (addr, "not found")
return None
然而,只是打印缺少dns记录的ipaddresses,我想将它们保存到列表中。但是当我尝试在socket.herror上返回一个值时,无论如何在尝试访问它时都会得到“NameError:name'missing'not defined”。
def lookup(addr):
try:
x = socket.gethostbyaddr(addr)
return
except socket.herror:
x = addr
print (addr, "not found")
return missing
我还没有真正找到这种类型的功能的类似例子,所以也许我有missunderstod使用try / except?
在尝试返回之前,你永远不会将“缺失”定义为变量。你遇到的另一个问题是你试图不返回任何东西或者返回一些东西,所以你必须在外面构建逻辑,这里不包括使它工作。
考虑这种(类似的)方法,它采用整个输入列表,只返回一个缺少地址的列表:
def find_missing(addr_list):
missing = []
for addr in addr_list:
try:
x = socket.gethostbyaddr(addr)
except socket.herror:
missing.append(addr)
return missing