我不明白为什么空字符串不是False,就像空字符串一样。我认为,收集的字符比少很多。在这种情况下,python目的的根源是什么?
>>> "" in 'fdsa'
True
>>> '' in ''
True
>>> 'asdf' in ''
False
>>> 'adsf' is True
False
我不太明白你的问题。您在这里使用两个运算符:
-
字符串的
in
检查第一个字符串是否是第二个字符串的子字符串。空字符串被视为每隔一个字符串的子字符串。 -
is
测试对象标识,如果两个运算符都是同一对象,则返回True
。'adsf'
和True
显然不是同一个对象,所以你得到了False
。
这两个运算符都与在布尔上下文中解释字符串无关——你的问题似乎也涉及到了这一点。例如,布尔上下文是if
语句的条件。在布尔上下文中,空字符串被视为False
,非空字符串被处理为True
。使用bool(obj)
可以查看对象在布尔上下文中的行为。
注意,如果你想查看字符串的布尔值是什么,你可以在上面调用bool()
函数,如下所示:
>>> bool('')
False
>>> bool('asdf')
True
关键字in
(docs)将测试元素是否在序列中——我认为这不是您想要的。