背景

python中执行一段if代码究竟发生了什么?

#情况一
x=[1]
if x:
    print(f'true is :{x}')
else:
    print(f'false is :{x}')

 print(x.__bool__()) #AttributeError: 'str' object has no attribute '__bool__'. Did you mean: '__doc__'?


#情况二
 x=True
if x:
    print(f'true is :{x}')
else:
    print(f'false is :{x}')


 print(x.__bool__()). # True

解析

实际上,任何一个obj或者var在执行if的时候,都会调用它的__bool__()的builts-in方法,如果变量没有这个方法,则先执行len(x),再执行bool(len(x)),这就是if的执行逻辑。