【Python入門】長くなったコードを改行する方法

indention Python

Pythonで長くなったコードを改行して書きたいことがあります。

長い文字列や複数条件でのif文など、コードを複数行に分けて見やすく書きたいときに、コードを改行する方法を解説します。

  • バックスラッシュ(\)で改行
  • 丸括弧で改行

バックスラッシュ(\)で改行

行末に、バックスラッシュ(\)を使用します。

バックスラッシュは、PC環境によって表示が異なり、Windows環境だと円マーク「\」、MacやLinux環境だと、左上から右下へのバックスラッシュ「\」となります。

長い文字列を改行してみます。

name = '寿限無 寿限無 五劫のすり切れ '\
        + '海砂利水魚の 水行末、雲来末、風来末 食う寝るところに住むところ '\
        + 'やぶらこうじのぶらこうじ パイポパイポパイポのシューリンガン '\
        + 'シューリンガンのグーリンダイ グーリンダイのポンポコピーのポンポコナーの長久命'

print(name)
寿限無 寿限無 五劫のすり切れ 海砂利水魚の 水行末、雲来末、風来末 食う寝るところに住むところ やぶらこうじのぶらこうじ パイポパイポパイポのシューリンガン シューリンガンのグーリンダイ グーリンダイのポンポコピーのポンポコナーの長久命

コードでは改行されていますが、変数「name」には連続した文字列として代入されています。

文字列を連結する「+」演算子は、省略しても大丈夫です。

name = '寿限無 寿限無 五劫のすり切れ '\
       '海砂利水魚の 水行末、雲来末、風来末 食う寝るところに住むところ '\
       'やぶらこうじのぶらこうじ パイポパイポパイポのシューリンガン '\
       'シューリンガンのグーリンダイ グーリンダイのポンポコピーのポンポコナーの長久命'

print(name)
寿限無 寿限無 五劫のすり切れ 海砂利水魚の 水行末、雲来末、風来末 食う寝るところに住むところ やぶらこうじのぶらこうじ パイポパイポパイポのシューリンガン シューリンガンのグーリンダイ グーリンダイのポンポコピーのポンポコナーの長久命


次は、if文での例です。
まず、改行を行わないコードです。
if文で、「long_long_id」と「long_long_pass_word」が、共に文字列と一致しているか確認しています。

# 文字列の設定
long_long_id = 'jyugemujyugemugokounosurikire'
long_long_pass_word = 'tyoukyuumeinotyousuke'

# 文字列の確認
if long_long_id == 'jyugemujyugemugokounosurikire' and long_long_pass_word == 'tyoukyuumeinotyousuke':
    print('OK')    
OK

if文は、1行に102文字と非常に長く、構造が分かりにくいです。

PEP8のコードスタイルガイドでも、行の長さは、最大で79文字です。

それでは、if文をandのところで改行してみましょう。

long_long_id = 'jyugemujyugemugokounosurikire'
long_long_pass_word = 'tyoukyuumeinotyousuke'

if long_long_id == 'jyugemujyugemugokounosurikire' and \
        long_long_pass_word == 'tyoukyuumeinotyousuke':
    print('OK')
OK

if文では、コードの実行部分(print)と、継続された条件部分の区別が必要です。
ここでは、継続された行の条件部分を字下げして記述しています。

メソッドチェイニング

pandasでは、ドット表記を用いてメソッドの順次呼び出しができます。
これを、メソッドチェイニングと呼びます。

メソッドチェイニングは、1行で書くこともできますが、メソッド毎に改行する方が読みやすいです。

# サンプルデータ
import pandas as pd
df_sample = pd.DataFrame({'a': [0, 2], 'b': [1, 4], 'c': [2, 6]})
df_sample
        a	b	c
0	0	1	2
1	2	4	6


サンプルデータを合計します。
まず、メソッドを分解して記述します。

# 値の取り出し
df_sample.values
array([[0, 1, 2],
       [2, 4, 6]], dtype=int64)


次に、全体を1行で記述します。

# 値を取り出して、合計
df_sample.values.sum()
15


メソッド毎に改行します。

df_sample.values\
         .sum()
15

丸括弧で改行

括弧で囲まれた要素は、行が結合されます。
これを利用して、コードを改行します。

name = ('寿限無 寿限無 五劫のすり切れ '
        '海砂利水魚の 水行末、雲来末、風来末 食う寝るところに住むところ '
        'やぶらこうじのぶらこうじ パイポパイポパイポのシューリンガン '
        'シューリンガンのグーリンダイ グーリンダイのポンポコピーのポンポコナーの長久命')

print(name)
寿限無 寿限無 五劫のすり切れ 海砂利水魚の 水行末、雲来末、風来末 食う寝るところに住むところ やぶらこうじのぶらこうじ パイポパイポパイポのシューリンガン シューリンガンのグーリンダイ グーリンダイのポンポコピーのポンポコナーの長久命


if文も、丸括弧を利用して改行できます。

long_long_id = 'jyugemujyugemugokounosurikire'
long_long_pass_word = 'tyoukyuumeinotyousuke'

if (long_long_id == 'jyugemujyugemugokounosurikire' and 
    long_long_pass_word == 'tyoukyuumeinotyousuke'):
    print('OK')
OK

if文では、コードの実行部分(print)と、継続された条件部分の区別が必要です。
ここでは、字下げをしないで、条件部分の文頭をそろえて記述しています。
もちろん、継続された行の条件部分を字下げして記述してもよいです。

まとめ

  • バックスラッシュで改行できた
  • 丸括弧で改行できた

コードを改行することで、すっきりとした記述をすることができます。
読みやすいコードが書けることは、とても重要なスキルだと思います。

関連情報

タイトルとURLをコピーしました