2017-09-15 96 views
1

有時候我想檢查表達式的邏輯值,所以我在Python(或IPython中)型,並得到結果:如何檢查交互式shell中表達式的邏輯值?

>>> a==3 
True 

但在其他情況下,它不會按照這種方式(這裏串是無):

>>> string 
>>> 

所以我檢查這樣的邏輯值:

>>> if string: print('True') 
... 
>>> 

是否有用於檢查表達式的邏輯值更短的方法是什麼? 任何函數返回將以相同方式評估if -condition?

+0

你可以用'string不是None'來測試None,它返回你的例子中的False – GPhilo

+0

我知道。我想檢查,如果* string *在if條件中返回* True *或* False *。但是如果我輸入* string *(下一行),我只是沒有結果。 – MaxGyver

+0

我已經從代碼塊中刪除了字符串的分配,所以現在它更清楚我的意思。 – MaxGyver

回答

5

檢查 表達式的邏輯值是否有更簡短的方法?

是的,這是bool()功能:

>>> bool(string) 
False 
7

所有表達式除了那些產生None的回聲。

如果您執行的表達式不會導致數據被回顯,那麼您可能有None結果。您可以測試None明確:

>>> string = None 
>>> string is None 
True 

使用is None產生非None結果。

如果你只是想測試一個表達式的布爾值,使用bool() function;它會按照標準truth value testing rules返回結果:

>>> string = None 
>>> bool(string) 
False 

再次,這是保證不None和呼應。但是,您無法通過這種方式區分None和其他false-y值。例如,空字符串''也將導致False

另一種方法是明確地打印所有表達結果,使用repr() function

>>> print(repr(string)) 
None 

這然後產生完全相同的輸出作爲呼應確實,跟單異常None被印刷過。

2

是,直接從表達,這將永遠是TrueFalse創建布爾你需要的布爾值。

>>> string = None 
>>> string is None 
>>> True 
1

string is Nonestring is not None將返回:

>>> string = None 
>>> bool(string) 
False 
+0

感謝您的回答!但「布爾()」是我所需要的。如果string ='',我也會得到False。 – MaxGyver

+0

'string is None'返回一個布爾型 – magicleon

+1

您可以在這裏使用'else:'; 「elif」條件與「if」條件的確切相反。 –