0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Python] 三項演算子の表記が腑に落ちなかったが英語で読めばすっきり理解できた話(結論ファースト、MECE)

Last updated at Posted at 2023-06-11

背景

 以下のコードを見たとき、すぐに処理が分からなかった上に、p1Trueのときに0が割り当てられると誤読した。

val1 = p1.val if p1 else 0

なぜ誤読したか?

  • 三項演算子は普段一切使用することなく、複数行のif else構文で記述していたから

    等価な複数行のif-else表現では、if p1が先行している

    if p1:
        val1 = p1.val
    else:
        val1 = 0
    

なぜ三項演算子を普段使っていなかったか?

 "三項演算子は可読性に問題があることが多いため使用するべきでない"という言説を学習初期に観測していたから。

誤読しないための解決策

  • 三項演算子を以下の表記で暗記する

    result = value_if_true if condition else value_if_false
    
  • 英語で読み上げる

    • 英語話者が定義した形式であるため、彼らの気持ちに寄り添って、思考プロセスに共感する

      x = 10
      y = 20
      # the variable max_value
      # is assigned
      # the value of x 
      # if x is greater than y;
      # otherwise,
      # it is assigned the value of y. 
      max_value = x if x > y else y
      

      つまり、

      1. 結論ファースト: max_valueとはxなんだ、と主張する。
      2. 条件: まあx > yの時だけどね、と続ける。
      3. MECE: 違ったらyね、として、MECE(もれなくダブりなく)を満足する構造で締めくくる

      という思考プロセス、論理的構造が、英語話者の頭にあるのだ。

所感

 日本語のみで考えていたら、三項演算子の表記は丸暗記するのみで、何となく気持ち悪い感覚が心に残ったままでいたと思う。
英語で読み上げて、彼らの表現したい気持ち、思考をたどってみれば、確かにこの表記で定義するだろうなあと腑に落ちたのであった。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?