背景
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的执行逻辑。