简单的python函数返回None,我正在使用return语句

时间:2014-09-05 11:23:22

标签: python

我不知道为什么这会返回无

def list_union(self,A,B):
    A = self.separate(A["fill"])
    B = self.separate(B["fill"])
    print A
    print B
    if len(A)==1 and A[0]=="no":
        return B.sort()
    if len(B)==1 and B[0]=="no":
        return ["no"]

假设A和B作为列表类型返回(它是,它工作正常)

A和B可能包含字符串是或否。我只是不知道他们为什么要回来。

让我补充一点,我不在乎这两个陈述是否错误,因为这个程序还有更多内容,但我认为无论我遇到什么问题都可以解决为什么这不是工作

2 个答案:

答案 0 :(得分:4)

默认情况下,Python中的函数返回None。在您的情况下,它有两个退出点,但如果其中一个条件为True,则只会 <\ n>。问问自己,如果两个条件都是False会发生什么?在最后添加另一个返回,以处理这种情况并返回一个适当的值(或者如果有意义则引发异常):

return "Unexpected result" # just an example 

另请注意,sort() 会返回一个值(它会对列表进行就地排序),因此它也会评估为None!换句话说,您应该更改此行:

return B.sort()

请改为:

B.sort()
return B

或者这样做, 返回一个新的排序列表:

return sorted(B)

答案 1 :(得分:1)

B.sort()不会返回B,它会返回None! (但B按你的意愿排序)

您可以使用sorted(B)返回您想要的内容。

实际上,内置的sort()方法就地修改了列表。

sorted()内置函数构建一个新的排序列表。