LoginSignup
4
4

More than 5 years have passed since last update.

徹底された効率化!名前がかっこいい"ショートサーキットエバリュエーション"が名前だけじゃ無い。

Posted at

日本語の名前が調べてもわからない、Short-circuiting evaluation。名前がかっこいいし、機能もかっこいいので忘れない様にメモ書き。

どんな時に発生する機能なのか

これは、条件式を定義する時に場合によっては起こる現象みたい。簡単にまとめると、

いくつかある条件式が途中までしか実行されない時がある

ということ。True or Falseの条件がまとまっているテーブル(初心者丸出しの説明、、笑)とかを思い出しながら見ていただくとわかりやすいかも。

例えば条件式がこんな感じだった時。

if 条件1 or 条件2:
    print('やっほー')

この時真ん中がorで結ばれていて、条件1がtrueであるならば、右側の値に関係なくifの中のコードは実行されますね。

条件2に関係なく、条件1の結果だけで先に進める時は、python3は条件2を実行しないで先に進んでいくそうです。

本当か見てみる

test.py

>>>def ReturnsTrue():
    print('ReturnsTrue() was called')
    return True

>>>def ReturnsFalse():
    print('ReturnsFalse() was called')
    return False

>>ReturnsTrue()
   #ReturnsTrue() was called
   #True

>>>ReturnsFalse()
   #ReturnsFalse() was called
   #False

>>>ReturnsFalse() or ReturnsTrue()
   #ReturnsFalse() was called
   #ReturnsTrue() was called
   #True

# ReturnsFalse()は実行されないはず。
>>> ReturnsTrue() or ReturnsFalse()
   #ReturnsTrue() was called
   #True


# or を andに変えたら全て実行されるはず。
>>> ReturnsTrue() and ReturnsFalse()
   #ReturnsTrue() was called
   #ReturnsFalse() was called
   #False

終わりに

あくまで初心者のメモ書きです。。。 雑でわかりにくいですが、気になる方はコメントしてください。一緒に考えてみます。

python3の徹底した効率化とか、作り手の意図が見える瞬間ってなんかコンピューター言語勉強してて楽しいと思える瞬間ですね。

そして、インターネットかつ英語でpython勉強すると、必ずコンピューターサイエンスの深めの知識帰ってくるんだよな

日本語だと、「こうすればコード走るよ!!」とかでおしまいな印象があるのです。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4