Python:在函数中使用try/except并向lis返回值

2024-05-23 22:14:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个小函数来循环一个ipaddress列表,并对它们进行dns查找。你知道吗

def lookup(addr): 
try:
    x = socket.gethostbyaddr(addr) 
    return

except socket.herror:
    x = addr 
    print  (addr, "not found") 
    return None  

但是,我不想只打印丢失dns记录的IP地址,我想把它们保存到一个列表中。但是当我试图返回插座.反射镜我得到“NameError:名称'失踪'是没有定义”时,试图访问它无论如何。你知道吗

def lookup(addr): 
try:
    x = socket.gethostbyaddr(addr) 
    return

except socket.herror:
    x = addr 
    print  (addr, "not found") 
    return missing  

我还没有找到这种函数的类似例子,所以我可能误解了try/except的用法?你知道吗


Tags: 函数列表returndnsdefnotsocketlookup
1条回答
网友
1楼 · 发布于 2024-05-23 22:14:13

在尝试返回之前,永远不要将“missing”定义为变量是的。是的另一个问题是,您试图不返回任何内容或返回某些内容,因此您必须在外部构建逻辑(此处未包含)以使其正常工作。你知道吗

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

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

        except socket.herror:
            missing.append(addr)
    return missing

相关问题 更多 >