2017-07-11 60 views
1

我正在對「if」語句進行快速測試,以下代碼片段會按預期的方式生成打印生成輸出。爲什麼下面的Python 3「if」有效?

案例1個

x = True 
if x: 
    print("Roses are red") 

結果>>>玫瑰是紅色的,在解釋器

另外:

type(x) 
>>> <class 'bool'> 

正如所預期的。

然後我嘗試:

案例2

x = "True" 
if x: 
    print("Roses are red") 

我再次得到了結果:玫瑰是紅色

和:

>>> type(x) 
<class 'str'> 

能有人在解釋第二種情況爲什麼「如果條件滿足」(如果這是描述這種情況的適當方式)並執行print()?

我還以爲正確的操作可能會像

if <expression>: 
    <do this> 

其中,「做這個」被執行在「表達」的計算結果爲布爾 True值。爲什麼當「表達」是字符串時執行「這樣做」?

+2

https://docs.python.org/3/reference/datamodel.html?highlight=__bool__#object.__bool__ – gd1

+1

非常感謝您的快速回復和參考。我明白。 –

+3

平衡不必要的downvote。這個問題必須作爲一個重複來關閉,但是* 1)如果你不太清楚你在找什麼,那麼尋找一個類似的問題並不是一件容易的事情; 2)我認爲,OP是SO社區和Python社區的新手,我沒有寫出令人震驚的問題,也沒有理由得到-1而沒有解釋。 – gd1

回答

2

字符串「True」是truthy,這意味着它在您的if條件中計算爲true。

相關問題