Python将0计算为False

时间:2012-09-19 14:48:36

标签: python boolean

在Python控制台中:

>>> a = 0
>>> if a:
...   print "L"
... 
>>> a = 1
>>> if a:
...   print "L"
... 
L
>>> a = 2
>>> if a:
...   print "L"
... 
L

为什么会这样?

5 个答案:

答案 0 :(得分:17)

在Python中,boolint的子类,False的值为0;即使值未在bool语句中隐含地转换为if(它们是False == 0,{{1}}也是如此。

答案 1 :(得分:12)

0是python中的假值

虚假值:from (2.7) documentation:

  

任何数字类型的零,例如,0,0L,0.0,0j。

答案 2 :(得分:7)

if子句中的任何内容隐含地bool调用它。所以,

if 1:
   ...

真的是:

if bool(1):
   ...

bool调用__nonzero__ 1 ,表示对象是True还是False

演示:

class foo(object):
    def __init__(self,val):
        self.val = val
    def __nonzero__(self):
        print "here"
        return bool(self.val)

a = foo(1)
bool(a)  #prints "here"
if a:    #prints "here"
    print "L"  #prints "L" since bool(1) is True.
python3.x上的

1 __bool__

答案 3 :(得分:0)

我认为它只是判0或0:

>>> if 0:
    print 'aa'

>>> if not 0:
    print 'aa'


aa
>>> 

答案 4 :(得分:0)

首先,python中的所有内容都是一个对象。因此,您的0也是一个对象,特别是内置对象。

以下是被视为false的内置对象:

  1. 定义为false的常量:“无”和“ False”。
  2. 任何数字类型的零:0、0.0、0j,小数(0),小数(0、1)
  3. 空序列和集合:'',(),[],{},set(),范围(0)

因此,当您在if或while条件或布尔运算中将0放入时,将测试其真值。

# call the __bool__ method of 0
>>> print((0).__bool__())
False

# 
>>> if not 0:
...     print('if not 0 is evaluated as True')
'if not 0 is evaluated as True'