30
16

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 3 years have passed since last update.

備忘録:pythonのelse時に何もしない場合の書き方をワンライナーで

Last updated at Posted at 2018-05-09

気付いたらそれだけなんですが、気付くまでに時間が掛かるやつです。
探しても見つからなかったので備忘録。

やりたいこと

Ternary_operator.py
def practice(message = None):
  if message is None:
    message = 'no message'
  print(message)

messageがあればそれを、なければno messageと表示させたい。
この書き方を一行でスマートにできればいいよね^^というのが事の発端。

調べたら見つかりやすかったケース(三項演算子を使う)

Ternary_operator.py
def practice(message = None):
  message = 'no message' if message is None else message
  print(message)

確かにこれで良いんですが、elseは何もしないので書きたくない。

こうすれば良かった

Ternary_operator.py
def practice(message = None):
  if message is None: message = 'no message'
  print(message)

三項演算子を使う、というところにとらわれすぎてて、基本的な使い方を忘れていました。
if~: の後に改行をしなければ良いだけなのですが、なぜか思い当たるまでに時間が掛かってしまった……。

(私がよくやる)実運用ケース

Ternary_operator.py
class hoge(object):
  message = 'no message'  #実際はこのmessageを__init__なりで色々変更しています。

  def practice(message = None):
    if message is None: message = self.message
    なにかしらの処理

これで少しはムダなコードが減りますね。
ちなみに、if~: 【ここ】は代入以外も当然書けますので、実際に活用する場合はその方がいいです。
lambdaと組み合わせるとすごい効果を発揮します。

読了後いいね!をお願いします。

どれだけの方に読んでもらっているか知りたいので、お手数をおかけしますがご協力いただけると嬉しいです。

30
16
3

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
30
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?