-2

次のようなことをしているときに、関数から出力が得られないのはなぜだろうと思っていました:

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

b = False

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

それは

「こんにちは」を印刷

ステートメントは実際に実行されましたか?

4

1 に答える 1

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

aそのため、関数に含まれるように変更したとしてもFalse(so a = False)、コードはまだ出力されsome stringます。

于 2013-10-12T13:47:39.023 に答える