tryhi 发表于 2020-12-23 09:28:40

如何判断一个变量是Ture还是1

比较运算符==将1跟True等价,那么如何去区分呢?
下面这段代码print会执行,说明==认为1跟True等价
a = True
if a == 1 :
    print("变量a是1")

我加了个数据整数型或布尔型的判断,感觉略显繁琐,还有其他更好的方法吗?
# a = True
a = 1
if a == 1 and type(a) == type(1):
    print("变量a是1")
elif a == True and type(a) == type(True):
    print("变量a是True")
else:
    print("变量a是不是True也不是1")

倒戈卸甲 发表于 2020-12-23 09:46:56

调用Type()已经很快捷了。不过为什么要在弱类型语言里干这件事,把它们区分出来也不会有好事发生的

tryhi 发表于 2020-12-23 10:10:30

倒戈卸甲 发表于 2020-12-23 09:46
调用Type()已经很快捷了。不过为什么要在弱类型语言里干这件事,把它们区分出来也不会有好事发生的

你说得有点道理,因为我写了个函数,里面将True跟1作为两种不同的状态传参,然后出现就出BUG了

逃兵 发表于 2020-12-23 10:10:36

1和True等价,0和False等价
你可以直接用他们运算
>>> True+2
3
>>> False+20
20
>>> False+True
1

tryhi 发表于 2020-12-23 10:11:29

逃兵 发表于 2020-12-23 10:10
1和True等价,0和False等价
你可以直接用他们运算

只能说几乎等价吧,1是整数型,True是布尔型,不完全等价,还是可以区分

逃兵 发表于 2020-12-23 10:28:44

tryhi 发表于 2020-12-23 10:11
只能说几乎等价吧,1是整数型,True是布尔型,不完全等价,还是可以区分

bool是int的子类,并且仅有 True 和 False 两个实例
页: [1]
查看完整版本: 如何判断一个变量是Ture还是1