次のようなことをしているときに、関数から出力が得られないのはなぜだろうと思っていました:
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ます。