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)と、継続された条件部分の区別が必要です。
ここでは、字下げをしないで、条件部分の文頭をそろえて記述しています。
もちろん、継続された行の条件部分を字下げして記述してもよいです。
まとめ
- バックスラッシュで改行できた
- 丸括弧で改行できた
コードを改行することで、すっきりとした記述をすることができます。
読みやすいコードが書けることは、とても重要なスキルだと思います。