简单的python函数返回None,我使用的是return语句
我不知道为什么一个也没有简单的python函数返回None,我使用的是return语句,python,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作
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可能包含“是”或“否”字符串。我只是不明白为什么它们不返回任何值
让我补充一句,我不在乎这两个are语句是否为假,因为这个程序还有更多的内容,但我认为我遇到的任何问题都可以通过找出它不起作用的原因来解决。默认情况下,Python中的函数返回
None
。在您的情况下,它有两个退出点,但只有当其中一个条件为True
时,才会到达这些退出点。问问自己,如果这两个条件都是False
,会发生什么情况?在末尾添加另一个return,以处理此情况并返回适当的值(或引发异常,如果有意义):
另外,请注意,sort()
不会返回值(它会对列表进行适当的排序),因此它的计算结果也将为None
!换句话说,您应该更改此行:
return B.sort()
改为这样做:
B.sort()
return B
或者执行此操作,返回一个新的排序列表:
return sorted(B)
B.sort()
不返回B,它返回None
!
(但B按您的要求排序)
您可以使用排序(B)返回您想要的内容
实际上,内置的sort()方法会就地修改列表
sorted()内置函数构建一个新的排序列表。如果两个条件的计算结果都不是
True
?B。sort()返回None
。使用排序(B)
代替。我喜欢这个答案,因为它实际上回答了我的问题,不需要额外的细节。谢谢
return sorted(B)