为什么python的解释不是空的strig的对象是逻辑False?

时间:2012-07-24 17:22:50

标签: python

我不明白为什么空字符串不是False,就像空字符串一样。我认为角色集合不仅仅是更少。在这种情况下,python目的的根源是什么?

>>> "" in 'fdsa'
True
>>> '' in ''
True
>>> 'asdf' in ''
False
>>> 'adsf' is True
False

2 个答案:

答案 0 :(得分:6)

我不太明白你的问题。您在这里使用两个运算符:

  1. in用于字符串检查第一个字符串是否是第二个字符串的子字符串。 The empty string is considered a substring of every other string.

  2. is测试对象标识,如果两个运算符都是同一个对象,则返回True'adsf'True显然不是同一个对象,因此您获得了False

  3. 这两个运算符中没有一个与解释布尔上下文中的字符串有关 - 您的问题似乎也触及了。例如,布尔上下文将是if语句的条件。在布尔上下文中,空字符串被视为False,非空字符串被视为True。您可以使用bool(obj)来查看对象在布尔上下文中的行为。

答案 1 :(得分:2)

请注意,如果您想查看字符串的布尔值是什么,可以在其上调用bool()函数,如下所示:

>>> bool('')
False
>>> bool('asdf')
True

关键字indocs)将测试元素是否在序列中 - 我认为这不是您想要的。