在实际行为上,没有区别.他们都返回None,就是这样.但是,所有这些都有时间和地点.
以下说明基本上是如何使用不同的方法(或者至少我是如何教他们应该使用的),但它们不是绝对的规则,所以如果你认为有必要,你可以把它们混合起来.
使用return None
这告诉该函数确实意味着返回一个值供以后使用,在这种情况下它返回None.然后可以在其他地方使用此值None.如果函数没有其他可能的返回值,则永远不会使用返回None.
在下面的例子中,如果给出的人是人,我们返回人的母亲.如果它不是人类,我们返回无,因为该人没有母亲(让我们假设它不是动物或者左右).
def get_mother(person):
if is_human(person):
return person.mother
else:
return None
使用返回
这用于与循环中断相同的原因.返回值无关紧要,您只想退出整个函数.它在某些地方非常有用,即使你不经常需要它.
我们有15名囚犯,我们知道其中一人有刀.我们一个接一个地穿过每个囚犯,检查他们是否有刀.如果我们用刀子打人,我们就可以退出这个功能,因为我们知道只有一把刀,没有理由检查其余的囚犯.如果我们没有用刀找到囚犯,我们会提出警报.这可以通过许多不同的方式完成,并且使用return可能甚至不是最好的方法,但它只是一个示例来说明如何使用return来退出函数.
def find_prisoner_with_knife(prisoners):
for prisoner in prisoners:
if "knife" in prisoner.items:
prisoner.move_to_inquisition()
return # no need to check rest of the prisoners nor raise an alert
raise_alert()
注意:您永远不应该执行var = find_prisoner_with_knife(),因为返回值并不意味着被捕获.
根本不使用任何回报
这也将返回None,但该值不应被使用或捕获.它只是意味着功能成功结束.它与C或Java等语言中的void函数返回基本相同.
在下面的示例中,我们设置了人的母亲姓名,然后在成功完成后退出该功能.
def set_mother(person, mother):
if is_human(person):
person.mother = mother
注意:你永远不应该做var = set_mother(my_person,my_mother),因为返回值并不意味着被捕获.