2012-08-24 37 views
0

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

任何人都可以请解释为什么Python做到这一点?

编辑:

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

我只是新来的Python,并试图找出什么时候我可能期望无类型而不是返回值。

+12

请给出一个可运行的例子。 –

+7

嗯。您是否使用'返回'声明? –

+0

希望我能给出一个可运行的示例,但我无法发布我们使用的专有代码。 – Brandon

回答

5

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

0在C++中NULL指针(虽然你应该把它称为NULL)的值。

如果你有一个C++函数返回void*类型,并返回0,你有效恢复NULL,因此你在Python返回None

您可能对此问题感兴趣:Do you use NULL or 0 (zero) for pointers in C++?(也请参阅nullptr)。

+0

哈哈好呃......感谢信息,不能相信,没有发生我 – Brandon

4

只是胡乱猜测,但如果你正在做这样的事情:

def gives_none() 
    #does stuff 
    0 

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

def works(): 
    #does stuff 
    return 0 
1

Python不强制返回类型,如Java所以它实际上是“很容易”忘记放在一个return语句在函数结束。这将导致函数返回None。