2013-08-28 52 views
1

考虑这个简单的例子:为什么蟒蛇不会引发NameError

i = 10 
if i != id: 
    print i 

由于id没有在这里定义,所以我是假设得到NameError: name 'id' is not defined但它不会提出任何。

但在这种情况下:

id = 10 
if i != id: 
    print i 

它实际上提出了一个NameError例外i。所以任何人都可以向我解释这种行为?

+1

'id'是一个[内建函数](http://docs.python.org/2/library/functions.html#id)。 –

回答

4

id是一个内置函数,所以它实际上被定义了。为您的变量使用另一个名称。

这里是所有的built-in functions的列表。

+0

对不起我的坏。它并没有进入我的脑海,它可能是一个内置的函数名称。 –

+0

我会尽快15分钟通过。 –

+0

糟糕,忘了这一点。我现在不好。 :) – Fabian