(15)pythonのNone

1523 ワード

Noneは空の文字列と空の文字列が異なるリスト0 Falseを表す
タイプによって値が異なります
print(type(None)) None None 
a=''
b=False
c=[]
print(a==None)  #False
print(b==None) #False
print(c==None) #False  #    

深く入り込む
def fun():
    return None

a = fun()
if not a:
    print('S')
else:
    print('F')

if a is None:
    print('S')
else:
    print('F')
#S
#S
def fun():
    return None

a = []
if not a:
    print('S')
else:
    print('F')

if a is None:
    print('S')
else:
    print('F')
#S
#F

クラスのデフォルトは空ではありません
class Test():
    pass

test = Test()
if test:
    print('S')
else:
    print('F')
#S

クラスが空の場合
class Test():
    def __len__(self):
        return 0 #(   int  )

test = Test()
if test:
    print('S')
else:
    print('F')
#F
class Test():
    def __len__(self):
        return 0 #(   int  )

test = Test()
print(bool(None)) #False
print(bool({}))#False
print(bool([]))#False
print(bool(test))#False

True or Falseは、lenに関係なくboolによって決定されます(つまりprintはbool call True、またはbool call Falseのみ)).
class Test():

    def __bool__(self):
        print('bool called')
        return False#(/True)

    def __len__(self):
        print('len called')
        return True #(   int  )

print(bool(Test()))
#bool called
#False#(/True)