簡體   English   中英

Python中的'True'和'False'

[英]'True' and 'False' in Python

我嘗試運行這段代碼:

path = '/bla/bla/bla'

if path is True:
    print "True"
else:
    print "False"

它打印錯誤 我認為Python將任何有價值的東西視為 為什么會這樣?

is比較認同。 字符串永遠不會與非字符串相同。

==是平等。 但是字符串永遠不會等於TrueFalse

你也不想要。

path = '/bla/bla/bla'

if path:
    print "True"
else:
    print "False"

來自http://docs.python.org/reference/expressions.html#boolean-operations

在布爾運算的上下文中,以及控制流語句使用表達式時,以下值被解釋為false:False,None,所有類型的數字零,以及空字符串和容器(包括字符串,元組,列表,字典) ,集和frozensets)。 所有其他值都被解釋為true。

我覺得你誤解的關鍵措辭是“解釋為假”或“解釋為真”。 這並不意味着這些值中的任何一個都與True或False相同,甚至不等於True或False。

表達式'/bla/bla/bla'將被視為true,其中布爾表達式是預期的(如在if語句中),但表達式'/bla/bla/bla' is True'/bla/bla/bla' == True將在Ignacio的答案中評估為False。

雖然其他海報解釋了為什么is True會做它的作用,但我想回復你帖子的這一部分:

我認為Python將任何有價值的東西視為真。 為什么會這樣?

來自Java,我也被這個絆倒了。 Python不會將值為True任何內容視為對象。 見證人:

if 0:
    print("Won't get here")

這將不會打印,因為0被視為False 實際上,任何數字類型的零都會計算為False 他們還按照您的預期進行decimal

from decimal import *
from fractions import *

if 0 or 0.0 or 0j or Decimal(0) or Fraction(0, 1):
    print("Won't get here")

以下是評估為False的其他值:

if None or False or '' or () or [] or {} or set() or range(0):
    print("Won't get here")

資料來源:

  1. https://medium.com/@dawran6/python-truth-value-testing-is-awesome-dae6c23cc1c2
  2. https://docs.python.org/3.7/library/stdtypes.html#truth-value-testing

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM