为什么这个在Python中返回True

时间:2016-10-27 02:17:02

标签: python if-statement

>>> if '' is not None: ... print'23333' ... 23333 我认为(不是None)是真的而且('')是假的所以为什么它会运行打印?

2 个答案:

答案 0 :(得分:4)

isis not测试对象标识,即测试''None是否是同一个对象,它们不是,所以测试返回{在你的情况下{1}}。

来自the Python documentation

  

运算符Trueis测试对象标识:is not为真   当且仅当x和y是同一个对象时。 x is y产生了   反向真值。

换句话说,虽然x is not y''具有相同的"truthiness",但如果您执行None,则它们都会评估为Falsebool(None),他们不会引用同一个对象。

答案 1 :(得分:2)

plays = Dict() player = 'w' state = Array{Char}(9,9) ... count = get(plays,(player,state),-1) 是单个运算符,等于is not的否定。由于is为false,'' is None为真。

但是,由于'' is not None测试身份,而不是相等,is仍然无法做到你想要的。