Python函数为什么返回None而不是False

时间:2020-06-27 05:28:41

标签: python

\func now()

print(func([1,2,3,4,5],[5,6,7,8,9]))>>是

print(func([1,2,3,4,5],[6,7,8,9]))>>无

为什么在第二种情况下该函数返回None?它应该返回“结果”,它是对或错。

4 个答案:

答案 0 :(得分:2)

控制语句未达到

NSLog

因此该函数没有要返回的内容,因此它返回None。

这将返回True或False

    result = True
    return result

答案 1 :(得分:2)

我可以建议一个更清洁(更快)的解决方案吗? Python的强项之一是列表理解。

def func(l1, l2):
    return any([x==y for x in l1 for y in l2])

print(func([1,2,3,4,5], [5,6,7,8,9]))
print(func([1,2,3,4,5], [6,7,8,9])) 

输出:

True
False

答案 2 :(得分:1)

由于当前正在编写函数,因此只有在l1和l2的至少一个元素之间存在成对匹配时,它才起作用-它将正确地将结果从False设置为True,然后返回结果。但是,如果l1和l2中的所有元素都不成对相等,则将永远不会返回return语句,因为您的函数将退出循环,然后终止该函数-不返回任何内容。

因此,return语句需要在循环之外。否则,如果列表中的所有元素都不相等,则您的函数将不会返回任何内容。

def func(l1, l2):
    result = False
    for x in l1:
        for y in l2:
            if x == y:
                result = True
    return result

答案 3 :(得分:0)

因此,让我们逐步了解一下这里发生的情况。您检查l1l2的每个元素,如果它们相等则返回值。现在,将其保留为空白。这意味着在这段代码中-

if x == y:
    result = True
    return result

如果result = True,则仅输入do return resultx == y语句。如果您提到的第二个示例中没有发生x == y的情况。有一个名为result = False的变量,但没有触发任何return语句。这意味着它不返回任何东西。因此,您得到一个None

正确的方法

您可以在代码中进行此修改,以使其像您要求的那样工作-

def func(l1, l2):
    result = False
    for x in l1:
        for y in l2:
            if x == y:
                result = True
                return result
    return result

如果没有触发内部return语句,它将返回None,而不是返回result