当前位置:  开发笔记 > 编程语言 > 正文

对象/布尔等价如何在python中工作?

如何解决《对象/布尔等价如何在python中工作?》经验,为你挑选了1个好方法。

来自javascript,我发现这个行为很奇怪:

>>> empty_list = []
>>> empty_list == True
False
>>> empty_list is True
False
>>> empty_list is False
False
>>> empty_list == False
False

而另一方面:

>>> one_list = [1]
>>> one_list is False
False
>>> one_list is True
False
>>> one_list == False
False
>>> one_list == True
False

实际上,我预计到了:

if []:
  pass # This never done

if [4]:
  pass # This is always done

>>> not []
True
>>> not [1]
False

列表将转换为布尔值.

我知道

>>> bool([])
False
>>> bool([1])
True

所以我想知道为什么notif进行这种转换,而不是in也不==

这有什么正式的解释吗?



1> Lærne..:

is是一个检查对象相等性的运算符.换句话说,a is b是真,当且仅当ab是指向内存中的同一个对象的两个名字.

如果您只是想要普通的平等或不平等,请使用==!=.但请注意,布尔值永远不会等于列表,因为它们只是不同的类型.Python中没有像在Javascript中那样进行隐式转换.在比较之前,您仍需要在Boolean中显式转换列表.

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有