当前位置: 首页 > 面试题库 >

Python-return, return None, and no return at all?

巩镜
2023-03-14
问题内容

考虑三个功能:

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

def my_func2():
  print "Hello World"
  return

def my_func3():
  print "Hello World"

它们似乎都返回None。这些函数的返回值的行为方式之间有什么区别吗?有什么理由偏爱一个?


问题答案:

在实际行为上,没有区别。他们都回来了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,但是该值并不意味着要使用或捕获。这仅表示该功能已成功结束。它基本上是相同returnvoid语言,如C ++Java功能。

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

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

注意:绝对不要这样做var = set_mother(my_person, my_mother),因为返回值不是要捕获的。



 类似资料:
  • 问题内容: 运行以下代码时(在Mac OS X 10.7的Mac上为Python 2.7.1) 我收到以下错误 我已经仔细检查了错误的制表符和/或空格。当我使用推荐的4个缩进空格时,可以确认代码失败并出现上述错误。当将返回值置于其他控制语句内时(例如,if,for等),也会发生此行为。 任何帮助,将不胜感激。谢谢! 问题答案: 在 返回 的语句才有意义,里面的功能:

  • 到目前为止,我们创建的函数都只是对传入的数据进行了处理,处理完了就结束。但实际上,在某些场景中,我们还需函数将处理的结果反馈回来,就好像主管向下级员工下达命令,让其去打印文件,员工打印好文件后并没有完成任务,还需要将文件交给主管。 Python中,用 def 语句创建函数时,可以用 return 语句指定应该返回的值,该返回值可以是任意类型。需要注意的是,return 语句在同一函数中可以出现多次

  • 本文向大家介绍python 如何区分return和yield,包括了python 如何区分return和yield的使用技巧和注意事项,需要的朋友参考一下 一、说明 return一直中,每中语言中其没没有很大差别,就不多说了。(shell语言return的是退出状态,可能差别是比较大的,感兴趣可参见“Linux Shell函数定义与调用”) 最早看到yield应该是哪们语言用来调整什么线程优先级的

  • 从子程序返回到之前通过函数调用、Gosub、激活 Hotkey、GroupActivate 或其他方式执行跳转的地方。 Return [, Expression] 参数 Expression 当 return 不在 函数 内时应该省略此参数。 由于此参数为 表达式, 所以下面所有的都是有效的例子: return 3 return "literal string" return MyVar ret

  • 描述 (Description) 该函数在子程序,块或函数结束时返回EXPR。 EXPR可以是标量,数组或散列值; 将在执行时选择上下文。 如果没有给出EXPR,则在列表上下文中返回空列表,在标量上下文中返回undef,或在void上下文中返回任何内容。 语法 (Syntax) 以下是此函数的简单语法 - return EXPR return 返回值 (Return Value) 此函数在标量上

  • 概要 <#function name param1 param2 ... paramN> ... <#return returnValue> ... </#function> 这里: name:方法变量的名称(不是表达式) param1, param2 等: 局部变量的名称, 存储参数的值(不是表达式),在 = 号后面和默认值 (是表达式)是可选的。 paramN,最后一个参数,