2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

短絡演算 (Python)

Last updated at Posted at 2024-10-03

Python3エンジニア認定基礎試験の勉強中です。
基礎の基礎を総復習...メモがわりに残していきます。

短絡演算

💡A and B

1. Aを評価し、その結果の真偽を判定する
2. 判定が「偽」であればBは評価せずにAの判定結果を返す
3. 判定が「真」であればBを評価し、その判定結果を返す

💡A or B

1. Aを評価し、その結果の真偽を判定する
2. 結果が「真」の時、Bを評価せずにAの判定結果を返す
3. 結果が「偽」の時、Bを評価し、その判定結果を返す

以下のようなコードがあった場合はどうなるか??

def num(value):
    return value

value1 = num(0) and num(1) and num(2)
value2 = num(0) or num(1) or num(2)

print(value1, value2)

💡andが複数続く場合

1. 左から順に評価していく
2. 最初に「偽」になったものが最終結果として返される
3. 「偽」になるものがないときは、一番最後の評価結果を返す

💡orが複数続く場合

1. 左から順に評価していく
2. 最初に「真」になったものが最終結果として返される
3. 「真」になるものがないときは、一番最後の評価結果を返す

数値の場合
=> 「0」が「偽」、「0以外」が「真」
文字列、リストなどの場合
=> 「空」が「偽」、「空以外」が「真」
ユーザー定義クラスのインスタンスの場合
=> デフォルトは「真」、__bool__や__len__を定義することで変更可能
(公開後、ご指摘を受け修正、追記いたしました。)

以上を踏まえて先ほどのコードの結果を見てみると

value1 = num(0) and num(1) and num(2)

num(0) = 0 #False

① andが複数続く式なので、最初に「偽」となったnum(0)で評価を終わり、value1 = 0となる

value2 = num(0) or num(1) or num(2)

num(0) = 0 #False
num(1) = 1 #True

② orが複数続く式なので、最初に「真」になったnum(1)で評価を終わり、value2 = 1となる

上記の①②より、このコードの実行結果は以下の通り。

0 1
2
2
2

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?