2012-07-24 43 views
-5

我不明白爲什麼不是空字符串是False,就像空字符串一樣。我認爲人物的收集比少得多。在這種情況下,python的用途是什麼?爲什麼python的解釋不會將strig的對象清空爲邏輯False?

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

「爲什麼不是空字符串是假的,就像空字符串一樣」。這到底意味着什麼? – 2012-07-24 17:26:25

+2

@DavidRobinson,OP的問:「爲什麼非空字符串是假的,就像空字符串一樣?」對於初學者來說,英語比Python難得多。 (OP的前提是錯誤的,這無助於事情。) – 2012-07-24 20:12:55

回答

6

我不完全明白你的問題。您在這裏使用兩個運營商:

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

  2. is測試對象標識和返回True如果兩個操作符都是同一個對象。 'adsf'True顯然不是同一個對象,所以你得到False。這兩個運營商的

無涉及解釋在布爾上下文字符串 - 這是你的問題似乎也觸及。例如,布爾上下文將是if語句的條件。在布爾上下文中,空字符串被視爲False,而非空字符串被視爲True。您可以使用bool(obj)來查看對象在布爾上下文中的行爲。

2

請注意,如果你想看到什麼樣的字符串的布爾值,你可以調用bool()功能就可以了,就像這樣:

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

關鍵字indocs)將測試如果一個元素是在一個序列 - 我不認爲這是你想要的。

相關問題