我发现了一种关于Python比较字符串和True/False的奇怪行为。
我认为Python会输出以下内容:
if "Test" == True:
print("Hello1")
但它没有成功。因此,我编写了一些测试用例,但有些我不理解。
if "Test" == True:
print("Hello1")
if "Test" == False:
print("Hello2")
#This I understand
if bool("Test") == True:
print("Hello3")
#This I understand too
if bool("") == False:
print("Hello4")
if "Test":
print("Hello5")
输出
>> Hello3
>> Hello4
>> Hello5
所以我不理解:
- 如果Hello1没有被打印出来,那么为什么Hello2也没有?
- 为什么Hello5会被打印出来,是因为将"Test"强制转换为布尔值时是隐式进行的吗?
"Test" is True
而不是"Test" == True
。我想这就是你的意思,但是你的措辞有些含糊不清。请为未来的用户澄清你的答案。 - eestradaNone
不是(严格或其他方式)一个类;它是一个单例。换句话说,它是NoneType
类的一个实例,只允许有一个实例:None
。你应该从你的答案中删除它是一个类的声明,因为这是错误的信息。除了我提到的事情,这是一个非常好的答案。 - eestrada