首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区分不返回值和返回值

区分不返回值和返回值
EN

Stack Overflow用户
提问于 2014-07-28 20:50:21
回答 3查看 212关注 0票数 4

有办法区分这两个返回的值吗?

代码语言:javascript
复制
>>> sort([1, 2, 3])
None

>>> dict(a=1).get('b')
None

第一个返回None,因为没有返回的值。第二个返回None作为返回值。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-28 21:04:44

返回None的函数,只是返回或允许执行到达函数的末尾基本上是一回事。

考虑以下职能:

代码语言:javascript
复制
def func1():
        return None

def func2():
        pass

def func3():
        return

如果我们现在去掉函数的字节码(dis模块可以这样做),我们将看到以下内容

代码语言:javascript
复制
func1():
  2           0 LOAD_CONST               0 (None)
              3 RETURN_VALUE        
func2():
  5           0 LOAD_CONST               0 (None)
              3 RETURN_VALUE        
func3():
  8           0 LOAD_CONST               0 (None)
              3 RETURN_VALUE        

功能是相同的。因此,即使通过检查函数本身,也无法区分它们。

票数 6
EN

Stack Overflow用户

发布于 2014-07-28 20:55:22

不,没有。以下函数都返回相同的值,None

代码语言:javascript
复制
def a(): return None  # Explicitly return, explicitly with the value None
def b(): return       # Explicitly return, implicitly with the value None
def c(): pass         # Implicitly return, implicitly with the value None

您无法区分这些函数返回的值,因为它们都返回相同的内容。

进一步阅读:Python — return, return None, and no return at all

票数 1
EN

Stack Overflow用户

发布于 2014-07-28 20:59:07

如果你专门问dict.get()的事

代码语言:javascript
复制
sentinel = object()
dict(a=1).get("b", sentinel)

编写良好的“查找”API可以这样工作(让您传递一个自定义的'not‘值),或者引发一些异常。

否则,好吧,不,NoneNone,就这样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25004120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档