小编典典
在实际行为上,没有区别。他们都回来了None,就是这样。但是,所有这些都有时间和地点。以下说明基本上是应如何使用不同方法的方法(或至少应告诉我应如何使用它们的方法),但它们不是绝对的规则,因此你可以根据需要将它们混合使用。
使用 return None
这说明该函数确实是要返回一个值以供以后使用,在这种情况下,它返回None。None然后可以在其他地方使用此值。return None如果该函数没有其他可能的返回值,则永远不要使用。
在下面的例子中,我们返回person的mother,如果person给出的一个人。如果不是人类,我们将返回,None因为person它没有mother(假设它不是动物或其他东西)。
def get_mother(person):
if is_human(person):
return person.mother
else:
return 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,但是该值并不意味着要使用或捕获。这仅表示该功能已成功结束。它基本上是相同return的void语言,如C ++或Java功能。
在下面的示例中,我们设置了人的母亲的名字,然后该函数在成功完成后退出。
def set_mother(person, mother):
if is_human(person):
person.mother = mother
注意:绝对不要这样做var = set_mother(my_person, my_mother),因为返回值不是要捕获的。
2020-02-14