日本語の名前が調べてもわからない、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勉強すると、必ずコンピューターサイエンスの深めの知識帰ってくるんだよな
日本語だと、「こうすればコード走るよ!!」とかでおしまいな印象があるのです。