-2
我想知道我爲什麼做這樣的事情的時候不要從功能的任何輸出:的Python:在控制結構功能
def x():
print 'hi'
a = True
return a
b = False
if (x and (b == False)):
print 'some string'
是在
打印「HI」
聲明實際執行?
我想知道我爲什麼做這樣的事情的時候不要從功能的任何輸出:的Python:在控制結構功能
def x():
print 'hi'
a = True
return a
b = False
if (x and (b == False)):
print 'some string'
是在
打印「HI」
聲明實際執行?
不,不會執行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
所以即使你改變了a
是False
在你的函數(所以a = False
),您的代碼將仍然印有some string
。
謝謝,無論如何,這只是一個愚蠢的錯字... – user2697260
@ user2697260:你忘了把它們包含在你原來的代碼中;如果你*包含了它們,你就會看到「Hi」。 –
我明白了你的觀點,但這只是解釋器中的一個小測試......在我的實際源代碼中,我正確地調用了該函數。 – user2697260