文字列の複数行表記

継続行を使ったり三重引用符を使えば複数行に渡る文字列を表現できますが、これらはインデントできないのが難点です。インデントすると文字列の中に余計な空白が入ってしまいます。

text = '\
1行目\n\
2行目\n\
3行目'

text = '''\
1行目
2行目
3行目'''

この場合、「括弧内はインデントの制約がない」「文字列リテラルは並べると連結される」という性質を利用して、文字列全体を括弧でくくるとうまく書けます。これならインデントしても文字列には空白は入りません。

text = (
    '1行目\n'
    '2行目\n'
    '3行目'
)
print text
1行目
2行目
3行目

同様に、1行で非常に長い文字列も分かりやすく複数行に区切って書くことができます。

sql = (
    'SELECT u.id, u.name, u.kana, u.prefecture, u.address, u.building, p.amount'
    ' FROM user u'
    ' LEFT JOIN purchase p ON u.id = p.user_id'
    ' WHERE p.purchase_date BETWEEN ? AND ?'
)
print sql
SELECT u.id, u.name, u.kana, u.prefecture, u.address, u.building, p.amount FROM user u LEFT JOIN purchase p ON u.id = p.user_id WHERE p.purchase_date BETWEEN ? AND ?