Python:在函数中使用try / except并将值返回到列表

问题描述 投票:0回答:1

我有一个小函数来循环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?

python list function
1个回答
2
投票

在尝试返回之前,你永远不会将“缺失”定义为变量。你遇到的另一个问题是你试图不返回任何东西或者返回一些东西,所以你必须在外面构建逻辑,这里不包括使它工作。

考虑这种(类似的)方法,它采用整个输入列表,只返回一个缺少地址的列表:

def find_missing(addr_list): 
    missing = []
    for addr in addr_list:
        try:
            x = socket.gethostbyaddr(addr) 

        except socket.herror:
            missing.append(addr)
    return missing
© www.soinside.com 2019 - 2024. All rights reserved.