5

私はこのようなコードを持っています:

if var:
    if var2 == getSomeValue()

これは単一の式である可能性があります。

if var and var2 == getSomeValue():

...ただし、がTrueのgetSomeValue()場合にのみ呼び出すことができます。var

したがって、を呼び出すとif var and var2 == getSomeValue()、両方がインタプリタによって評価されるか、評価が次の場合に停止しますvarFalse?Pythonのドキュメントでこの情報をどこで見つけることができますか?(何を検索すればいいのかわからなかった...:/)

4

6 に答える 6

10

これは短絡と呼ばれ、Pythonがそれを行うので、問題ありません。

更新:ここに簡単な例があります。

>>> def foo():
...     print "Yay!"
... 
>>> if True and foo() is None:
...     print "indeed"
... 
Yay!
indeed
>>> if False and foo() is None:
...     print "nope"
... 

更新2:@Somebodyからのすばらしいコメントで見落とされないように、関連するPEP(308)を私の答えに入れてください。まだMS-DOSを使用しています。

于 2011-06-03T17:47:44.560 に答える
2

2 番目の項目は評価されません。これは簡単なプログラムで確認できます。

def boo():
  print "hi"
  return True

a = False
b = True

if a and b == boo():
  print "hi2"

boo()実行しても何も出力されないため、が呼び出されていないことがわかります。

于 2011-06-03T17:49:07.877 に答える
2

の場合、評価varFalse停止します。

PEP 308のShort-Circuit Behaviorセクションを参照してください。

于 2011-06-03T17:51:48.960 に答える
1

Re「何を検索すればいいのか分からなかった

利用可能なインデックスがある場合は、検索する必要はありません。

Python のホームページにアクセスします。続けてクリック

  • ドキュメンテーション
  • 現在のドキュメント
  • インデックス (右上にあります)

表示されるまで下にスクロールします

and
    bitwise
    operator

したくない場合はbitwise、 をクリックしてくださいoperator

Windows を使用している場合は、コンピューターにマニュアルがあり、十分に優れた GUI インターフェイスを備えています。左上隅近くの目次/索引/検索/お気に入りペインを確認してください。

于 2011-06-04T09:08:21.390 に答える
1

Pythonのドキュメントには、andorが短絡していると記載されているため、false のvar2 == getSomeValue()場合は評価されません。var

于 2011-06-04T08:33:43.637 に答える
1

評価 getSomeValue は評価されません。

var = False
if var and foo():
   print "here"
else:
   print "there"

def foo():
   print "In foo"
   return False
于 2011-06-03T17:49:01.263 に答える