在实际行为上,没有区别。他们都回来了None,就是这样。但是,所有这些都有时间和地点。以下说明基本上是如何使用不同的方法(或至少我应该如何教他们应该使用),但它们不是绝对的规则,所以如果你认为有必要你可以把它们混合起来。
运用 return None
这告诉该函数确实意味着返回一个值供以后使用,在这种情况下它返回None。None然后可以在其他地方使用此值。return None如果函数没有其他可能的返回值,则永远不会使用。
在下面的例子中,如果给定的是人,则返回person's' 。如果它不是人类,我们会返回,因为它没有(让我们假设它不是动物左右)。motherpersonNonepersonmotherdef get_mother(person):
if is_human(person):
return person.mother
else:
return None
注意:你永远不应该这样做var = get_mother(),因为让我们假设var是一个字典并且你通过var.items()进行迭代它将引用一个错误,引用None没有方法items()。你故意返回None然后必须在调用函数中适当地处理它。
运用 return
这与break循环中使用的原因相同。返回值无关紧要,您只想退出整个函数。它在某些地方非常有用,即使你经常不需要它。
我们得到15 prisoners,我们知道其中一个有刀。我们prisoner逐个循环检查他们是否有刀。如果我们用刀子打人,我们就可以退出这个功能,因为我们知道只有一把刀,没有理由检查其余部分prisoners。如果我们没有prisoner用刀找到,我们会提出警报。这可以通过许多不同的方式完成,并且使用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(),因为返回值并不意味着被捕获。
使用无return可言
这也将返回None,但该值不应被使用或捕获。它只是意味着功能成功结束。它与C ++或Java等语言return中的void函数基本相同。
在下面的示例中,我们设置了人的母亲姓名,然后在成功完成后退出该功能。def set_mother(person, mother):
if is_human(person):
person.mother = mother
注意:您永远不应该这样做var = set_mother(my_person, my_mother),因为返回值并不意味着被捕获。