Python 函数返回空值

Python 函数返回空值,Python在所有函数的末尾添加了隐式的return None语句。因此,如果函数没有指定返回值,默认情况下会返回None

这意味着可以用纯return语句替换return None语句,也可以直接不写return语句,结果完全相同:

def foo1(value):
    if value:
        return value
    else:
        return None

def foo2(value):
    """纯return语句,相当于`return None`"""
    if value:
        return value
    else:
        return

def foo3(value):
    """无return语句,也相当于`return None`"""
    if value:
        return value

如果向2这三个函数都传递假值,那么三个函数都能正常返回None:布尔计算为False的值。

>>> type(foo1(0))
<class 'NoneType'>

>>> type(foo2(0))
<class 'NoneType'>

>>> type(foo3(0))
<class 'NoneType'>

那么,什么情况下才应该在自己的Python代码中使用这个特性呢?

我的经验法则是,如果函数(有些语言将其称为过程没有返回值,那么就忽略返回语句。在这种情况下添加返回语句不仅多余,而且会带来混乱。比如Python的内置print函数就是一个过程,调用print只是为了使用函数的副作用(打印文本),永远都不是为了获得该函数的返回值。

再来看看Python内置的sum函数。这个函数显然具有一个逻辑返回值,并且通常不会仅为其副作用而调用sumsum的目的是将一系列的数相加,然后传递结果。因此,如果一个函数从逻辑的角度来看有返回值,那么要自行决定是否使用隐式返回语句。

一方面,有人认为省略显式的return None语句能让代码更简洁,因而更易于阅读和理解。主观上也可以说这让代码“更漂亮”了。

另一方面,有些程序员很惊讶Python有这样的行为。在编写干净和可维护的代码时,出乎意料的行为通常并不是一个好兆头。

一个代码示例使用了“隐式返回语句”。代码中没有对此进行说明,本意只是想用一个简短的代码示例解释Python中的其他功能。

然而最终我收到了源源不断的电子邮件,向我指出该代码示例中“缺少return语句”。显然,并不是每个人都清楚理解Python的隐式返回行为,而且它在这个示例中还会令人分心。因此我又添加了一个注释来说明,之后就没有再收到这些电子邮件了。

不要误会,我也喜欢写出干净且“美丽”的代码。同时,我也强烈认为程序员应该清楚地了解正在使用的语言中有何细节。

不过,考虑到即使这种简单的误解对维护也有很大的影响,最好写出更明确清晰的代码,毕竟代码具有沟通作用

Python 函数返回空值 关键要点

  • 如果函数没有指定返回值,则返回None。是否明确地返回None是风格方面的问题。

  • 返回空值是Python的核心功能,但是使用显式的return None语句能更清楚地表达代码的意图。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程