当前位置: 首页 > 知识库问答 >
问题:

退,不退,根本不退?

经俊茂
2023-03-14

考虑三个函数

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

def my_func2():
  print "Hello World"
  return

def my_func3():
  print "Hello World"

他们似乎都没有返回。这些函数的返回值的行为有什么不同吗?有什么理由偏爱其中一个而不是另一个吗?

共有1个答案

苏宏逸
2023-03-14

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

这表明该函数确实要返回一个值供以后使用,在本例中,它返回none。这个值none可以在其他地方使用。return none如果该函数没有其他可能的返回值,则从不使用。

在下面的示例中,如果给定的person是人类,则返回personmother。如果它不是人类,则返回none,因为person没有母亲(假设它不是动物或其他东西)。

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_nife(),因为返回值不是要被捕获的。

这还将返回none,但该值不是用来使用或捕获的。它只是表示函数成功结束。它与C++或Java等语言中void函数中的return基本相同。

def set_mother(person, mother):
    if is_human(person):
        person.mother = mother
 类似资料:
  • 问题内容: 我将使用解决方案来更新此问题,我想包括我的问题和解决方案,因为我无法在Stackoverflow上找到它。如果您想加入解决方案,请放心。 我有一个使用Visual Studio 2013创建的新创建的“空” MVC5项目。如果可能,我需要from并想要AJAX行为。在MVC3中使用Ajax.BeginForm总是很简单,所以我认为在MVC5中也是如此。 但是,当我单击“提交”按钮时,在

  • 我有一个用于pub-sub的redis客户端。我正在使用websocket消息处理程序动态订阅redis频道。websocket消息的有效负载包含我用来创建频道名称的ID。例如。订阅此频道效果良好,发布到该频道时会收到消息。 但我遇到的问题是,我想在某个时候取消这个频道的订阅。通过阅读redis文档,我的假设是,我会使用,这样我就可以使用,从任何频道取消订阅,但尝试后仍会收到消息。 当使用时,该模

  • 问题内容: 我“d成的运行Django的服务器,我不能简单地和出来。 是否有其他摆脱困境的方法? 目前,我手动关闭本地PC上的选项卡,然后再重新打开,但这变得很烦人。 问题答案: 或 。请参阅屏幕手册#分离。

  • Git版本回退的意思就是将本地代码回退到某一个指定的版本,此版本之前的所有内容都会被重置. 操作方法: VCS —> Git —> Reset HEAD—> 弹出Reset Head对话框. Reset HEAD: Reset Type: 回退类型 Mixed:回退到某个版本,本地源码不会回退, 会回退commit和index信息. Soft:回退到某个版本, 本地源码和index信息不会回退,

  • //在下面的程序中,在内部,当用户收到指令时,他可以简单地进入哨兵退出while循环,但是,当您得到希望购买的票的结果时,按999并不退出程序

  • 你好,所以我正在使一个java工作,出于某种原因,当我到达if else时,当我在对话框中单击no时,它没有退出,而是继续询问学生名`public static void main(string[]args){ }`