1

我不太明白为什么 Python 会自动将函数返回给我的任何 0 转换为 None 对象。我已经用几乎所有的通用语言进行了编程,但我以前从未遇到过这种情况。我希望如果我在结果中设置 0,我会从函数中得到 0。

谁能解释一下为什么 Python 会这样做?

编辑:

为了提供更多信息,我们有一个 C++ 类的包装器,返回值类型是一个 void 指针。所以如果它返回一个值为 0 的整数,它会给我一个 None 类型。这对任何人都有意义吗?

我只是 Python 的新手,并试图弄清楚我何时可能期望 None 类型而不是返回值。

4

3 回答 3

5

我们有一个 C++ 类的包装器,返回值类型是一个 void 指针。所以如果它返回一个值为 0 的整数,它会给我一个 None 类型

0 是NULLC++ 中指针的值(尽管您应该将其称为NULL)。

如果你有一个 C++ 函数返回void*类型并且你 return 0,那么你实际上是在返回NULL,因此你None在 Python 中返回。

您可能对这个问题感兴趣:C++ 中的指针是否使用 NULL 或 0(零)?(参见nullptr)。

于 2012-08-24T20:58:03.180 回答
4

只是一个疯狂的猜测,但如果你正在做这样的事情:

def gives_none()
    #does stuff
    0

你没有意识到 python 需要一个明确的 return 语句。虽然有些语言会在这里返回零,但这不是 Python 的工作方式。如果没有明确的 return 语句,您的函数将返回None。尝试:

def works():
    #does stuff
    return 0
于 2012-08-24T20:56:34.817 回答
1

Python 不像 Java 那样强制执行返回类型,因此实际上“很容易”忘记在函数末尾添加 return 语句。这将导致函数返回 None。

于 2012-08-24T20:57:23.207 回答