次のようなことをしているときに、関数から出力が得られないのはなぜだろうと思っていました:
def x():
print 'hi'
a = True
return a
b = False
if (x and (b == False)):
print 'some string'
それは
「こんにちは」を印刷
ステートメントは実際に実行されましたか?
次のようなことをしているときに、関数から出力が得られないのはなぜだろうと思っていました:
def x():
print 'hi'
a = True
return a
b = False
if (x and (b == False)):
print 'some string'
それは
「こんにちは」を印刷
ステートメントは実際に実行されましたか?
いいえ、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
(so a = False
)、コードはまだ出力されsome string
ます。