Python - 長い行を複数行に分ける

行末にバックスラッシュを付ける方法と、丸括弧でくくる方法があります。また、リストを角カッコで定義する場合と、集合を波カッコで定義する場合、カッコ内は自由に改行できます。

行末にバックスラッシュ

行末にバックスラッシュがあると、改行コードが無視されます。
# 行分割前
value = 10000 + 20000 + 30000 + 40000

# 行分割後
value = 10000\
      + 20000\
      + 30000\
      + 40000

インラインコメントは、最終行のみ書けます。

value = 10000\ # エラー
      + 40000

value = 10000\
      + 40000  # OK

解説

Pythonには 物理行(logical line) と 論理行(physical line) という概念があります。物理行は実際に書かれたソースコード内の1行で、論理行 は Python が ソースコードを解析した結果、解釈をした1行です。

Python の仕様で バックスラッシュ の次が 改行コード の場合、バックスラッシュと改行コードが削除され、1行の論理行にまとめられます。

丸かっこ

丸カッコ内の文

丸カッコ「()」内の式は自由に改行でき、行末にコメントも書けます。
# 分割前
value = 10000 + 20000 + 30000 + 40000

# 分割後
value = (10000 +   # コメント可
         20000 +   # コメント可
         30000 +   # コメント可
         40000)    # コメント可

タプル(tuple型)

丸カッコ「()」内にカンマ「,」が含まれていると、タプル(tuple型)オブジェクトを作成できます。カッコ内は自由に改行できます。
# 分割前
value = (10000, 20000, 0000, 40000)

# 分割後
value = (10000,   # コメント可
         20000,   # コメント可
         30000,   # コメント可
         40000)   # コメント可

文字列リテラル

文字列リテラルを連続で定義すると、+ 演算子を使用しなくても連結されます。
# 文字列リテラルを連続で定義(間にスペースなし)
value = 'abc''ABC''123'
print(value)  # 結果 = 'abcABC123'

# 文字列リテラルを連続で定義(間にスペースあり)
value = 'abc' 'ABC' '123'
print(value)  # 結果 = 'abcABC123'

この性質と バックスラッシュ または 丸カッコ を使用した分割は次の通りです。

# 分割前
value = 'abcABC123'
print(value)  # 結果 = 'abcABC123'

# バックスラッシュを使用して分割
value = 'abc'\
        'ABC'\
        '123'
print(value)  # 結果 = 'abcABC123'

# 丸カッコを使用して分割
value = ('abc'   # コメント可
         'ABC'   # コメント可
         '123')  # コメント可
print(value)     # 結果 = 'abcABC123'

角かっこ(リスト) と 波かっこ(集合)

角カッコ「[]」内にカンマ「,」区切りで 値を並べると、リスト(list型)オブジェクトを作成できます。カッコ内は自由に改行できます。
# 行分割前
value = [10000, 20000, 30000, 40000]

# 行分割後
value = [10000,  # コメント可
         20000,  # コメント可
         30000,  # コメント可
         40000]  # コメント可

波カッコ「{}」内にカンマ「,」区切りで 値を並べると、集合(set型)オブジェクトを作成できます。カッコ内は自由に改行できます。

# 行分割前
value = {10000, 20000, 30000, 40000}

# 行分割後
value = {10000,  # コメント可
         20000,  # コメント可
         30000,  # コメント可
         40000}  # コメント可

参考資料

検証環境