2013-10-12 65 views
-2

我想知道我爲什麼做這樣的事情的時候不要從功能的任何輸出:的Python:在控制結構功能

def x(): 
    print 'hi' 
    a = True 
    return a 

b = False 

if (x and (b == False)): 
    print 'some string' 

是在

打印「HI」

聲明實際執行?

回答

3

不,不會執行print 'hi'語句。您需要通話功能來運行它:

if (x() and (b == False)): 

注意x(),括號調用(呼叫)功能。

上面可以更好地表示爲:

if x() and not b: 

Python函數是第一類對象; x只是對函數對象的引用,並不會調用它。函數對象,就像在Python中的大多數對象,被認爲是True在布爾環境:

>>> def foo(): return False 
... 
>>> foo() 
False 
>>> bool(foo) 
True 

所以即使你改變了aFalse在你的函數(所以a = False),您的代碼將仍然印有some string

+0

謝謝,無論如何,這只是一個愚蠢的錯字... – user2697260

+0

@ user2697260:你忘了把它們包含在你原來的代碼中;如果你*包含了它們,你就會看到「Hi」。 –

+0

我明白了你的觀點,但這只是解釋器中的一個小測試......在我的實際源代碼中,我正確地調用了該函數。 – user2697260