2016-07-07 80 views
1

沒有邏輯運算符聲明,我有以下Python代碼:如果在蟒蛇

value = 1.9 

if value: 
    #do something 
else: 
    #do something else 

這裏會發生什麼?我無法理解,因爲value不是布爾值。

+0

它將會是False您可以測試python如何使用bool()評估布爾值。例如bool(1)= True。 bool(0)= False。布爾(「任何字符串」)=真。 bool(「」)= False。 bool(2.2)= true。非零數字總是爲真。非空字符串總是如此。非空列表是真實的,等等 – gtalarico

回答

5

Python有truthy岬其中非布爾值基本上是「強制」到布爾者的概念,如圖here

4.1真值測試

任何對象都可以是測試真值,用於ifwhile條件或作爲下面布爾運算的操作數。下面的值被認爲是假:

  • None
  • False
  • 任何數值類型的零,例如,00.00j
  • 任何空序列,例如'',(),[]
  • 任何空映射,例如,{}
  • 用戶定義類的實例,如果類定義了__bool__()__len__()方法,則該方法返回整數零或布爾值False

所有其他值都被認爲是真的 - 因此許多類型的對象總是爲真。

操作和內置功能有一個布爾結果總是返回0False假,1True真正的,除非另有說明。 (重要的例外:布爾運算orand總是返回自己的一個操作數)。

底線是1.9來下的「所有其他值被認爲是真正的」的條款,因爲它符合所有值的那會被認爲是虛假的。最接近的是第三個(數字類型),但由於它不是零,所以它不會相當到達那裏。

1

任何對象都可以測試真值,以用於if或if while 條件或下面的布爾操作的操作數。下面 值被認爲是假:

  • 任何數值類型的零,例如,0,0L,0.0,0j的。
  • 任何空序列,例如'',(),[]。
  • 任何空映射,例如{}。用戶定義的類的
  • 情況下,如果類定義了一個 非零()或LEN()方法中,當該方法返回整數零或布爾值假

https://docs.python.org/2.4/lib/truth.html

所以,因爲價值不是這些事情之一,它需要的是,而不是其他!

+0

舊文檔...在這種情況下仍然好... – mgilson

0

檢查此documentation materials。在python中,就像許多編程語言一樣。 0, '', []類型的值給出False,而其他任何值返回True

+0

許多?名字七:-) – paxdiablo

+0

例如,'python','C','C++','Perl','Lua','Ruby','JavaScript'。 – sehrob

+0

@sehrob正如我在C/C++中所知的那樣,空字符串文字''「'表示真,因爲它不是空指針,而在JavaScript中,空列表文字'[]'也表示真。但是這些東西在Python中被認爲是'False'。 – neuront

0

只有當值等於0或「」

+0

還有很多其他情況會給虛假的... – paxdiablo