【Python】1行のコードを複数行に改行する

Tips

Python書いていると、あまりにも1行が長くなってしまう場合がある。

動作的には何も問題ないのだが、可読性が著しく低下してしまう。

ので、いい感じに改行する方法を備忘しておく。

 

方法

今回改善したいコード

# coding:utf-8

def testFunc(str1, str2, str3):
  print(str1 + str2 + str3)

def main():
  testFunc('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', 'cccccccccccccccccccccccccccc')

if __name__ == "__main__":
  main()

サンプルにしてももうちょっとマシなコード書けよっていう意見は無視で。

この場合、testFanc関数への引数があまりにも長いため、1行が長くなってしまい結果非常に読みにくい。

可読性を改善するために改行するには、行の終わりに\(バックスラッシュ)をつけるとよい。

# coding:utf-8

def testFunc(str1, str2, str3):
  print(str1 + str2 + str3)

def main():
  testFunc('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', \ 
           'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb', \
           'cccccccccccccccccccccccccccc')

if __name__ == "__main__":
  main()

こんな感じ。

出力結果はどちらも以下のようになる。

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccc

ちなみに、引数の途中で改行するとどうなるか。

例として以下のようなコードを書いてみる。

# coding:utf-8

def testFunc(str1, str2, str3):
  print(str1 + str2 + str3)

def main():
  testFunc('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', \
           'bbbbbbbbbbbbbbbbbbbb \
           bbbbbbbbbbb', \
           'cccccccccccccccccccccccccccc')

if __name__ == "__main__":
  main()

すると出力はこんな感じとなる。

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbb           bbbbbbbbbbbcccccccccccccccccccccccccccc

どうやら改行後のインデントのためのスペースも文字列として判定されるらしい(そりゃそうか)

よっぽどのことがない限り、引数の途中で改行することはやめておいたほうがよさそう。

というかやめよう。

 

コメント

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