gpt4 book ai didi

python - return,return None,根本不返回?

转载 作者:IT老高 更新时间:2023-10-28 12:06:43 29 4
gpt4 key购买 nike

考虑这三个函数:

def my_func1():
print "Hello World"
return None

def my_func2():
print "Hello World"
return

def my_func3():
print "Hello World"

它们似乎都返回None。这些函数的返回值的行为方式有什么不同吗?是否有任何理由偏爱其中一种?


参见:is it possible to not return anything from a function in python?

最佳答案

在实际行为上,没有区别。他们都返回 None 就是这样。然而,所有这些都有时间和地点。以下说明基本上是应该如何使用不同的方法(或者至少是我被教导应该如何使用它们),但它们不是绝对规则,所以如果你觉得有必要可以将它们混合起来。

使用 return None

这表明该函数确实要返回一个值以供以后使用,在这种情况下它返回 None。这个值 None 然后可以在其他地方使用。如果函数没有其他可能的返回值,则永远不会使用 return None

在以下示例中,如果给出的 person 是人类,我们将返回 personmother。如果它不是人类,我们返回 None,因为 person 没有 mother(假设它不是动物或其他东西)。

def get_mother(person):
if is_human(person):
return person.mother
else:
return None

使用 return

这与循环中的 break 的使用原因相同。返回值无关紧要,您只想退出整个函数。它在某些地方非常有用,即使您并不经常需要它。

我们有 15 个囚犯,我们知道其中一人拿着刀。我们一个一个地循环遍历每个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 等语言的 void 函数中的 return 基本相同。

在下面的例子中,我们设置了人的母亲的名字,然后函数完成后退出。

def set_mother(person, mother):
if is_human(person):
person.mother = mother

注意:你不应该这样做 var = set_mother(my_person, my_mother),因为返回值并不意味着被捕获。

关于python - return,return None,根本不返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15300550/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com