1

私はフォーラムに参加したばかりなので、この質問が初歩的すぎないこと、または以前に質問されたことがあることを願っています。Python でいくつかのコードを書いているときに、true または false を返す個々の関数 (ここでは function1、function2、および function3 と呼ばれます) が同じ出力を画面に書き込むことがわかったので、このようにそれらをリンクしたいと思います。

if function1 or function2 or function3: 
    print "something"

function3 の実行にはさらに時間がかかることがわかっているので、これは避けたいと思います。条件が記述されたので、Python が最初に function1 を false と評価してから、if 条件が既に壊れていることがわかっているため、他の条件の評価を停止すると、私にとっては素晴らしいことのように思えます。もう 1 つの可能性は、結合された式の真理値が評価される前に、3 つの関数すべての戻り値が別々に検出されることです。if 条件評価の一連のアクションを知っている人はいますか?

4

2 に答える 2

3

Python は、 「短絡」評価と呼ばれるメカニズムを使用して、既にこれを行っています。

評価中の任意の段階でブール式が False ( の場合and) または True ( の場合or) であることが判明した場合、最終結果はその時点ですでに決定されているため、残りの式は評価されません。

したがって、ブール式に入れる順序は非常に重要です。

次のようなことができるので、これは非常に便利です。

if i != 0 and 2332.0 / i:
   ...

単純な式でゼロによる除算を避けるためand(つまり、ゼロの場合、除算は行われませんi)。

()また、注意:関数呼び出しが機能する必要があります。

最後に、この短絡評価は Python に固有のものではなく、多くの言語で行われています。

于 2012-07-23T15:51:16.030 に答える
2

あなたが話していることは「短絡」と呼ばれ、Pythonは実際にそれを行います。

ただし、これを適切に機能させたい場合は、戻り値に対して戻り値としてではandなく、演算子を使用する必要があると思います(2 番目の値を確認することはありません)。完全を期すために、( を見ずに) を返します。orFalse or TrueTrueFalse and TrueFalseTrue or FalseTrueFalse

また、あなたの例では、実際に関数を呼び出しているわけではありません... Pythonで関数を呼び出すには、括弧が必要です:

function1(args)  #for example
于 2012-07-23T15:51:49.817 に答える