-5

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

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

2 回答 2

6

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

  1. infor strings 检查第一个字符串是否是第二个字符串的子字符串。 空字符串被认为是所有其他字符串的子字符串。

  2. is测试对象身份,True如果两个运算符是同一个对象,则返回。 'adsf'并且True显然不是同一个对象,所以你得到False.

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

于 2012-07-24T17:26:17.147 回答
2

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

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

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

于 2012-07-24T17:27:47.750 回答