PythonにはC言語のように「条件コンパイル(#ifdef)」のようなものがない。
あればデバッグ時に複数の行を一気にコメント化するのに便利なのですが。
#if 0 printf("この行はコンパイル時に取り除かれる。n" ) ; printf("この行はコンパイル時に取り除かれる。n" ) ; printf("この行はコンパイル時に取り除かれる。n" ) ; #end printf( "この行はコンパイルされるn" ) ;
のようなことがPythonではできない。
でもどうしてもやりたい。そんな時は「”””」を上手く使えばそれっぽいことができます。
Pythonで複数行をコメント化する方法
Pythonで「条件コンパイル(#ifdefなど)」がないので複数行を一気にコメント化する場合に全行に「#」を付ける必要がある。
対象が少なければ良いが多くの行がある場合は厄介です。
そこで「コンパイル時に無視する」のではなく「実行文を文字列化しちゃおう」ということでやってみます。
ネストしていない文のコメント化
まずは簡単なネスト(if文などでない)文をコメント化します。
基本は「”””」から「”””」で囲みます。
print( "case-1-1" ) print( "case-1-2" ) """ print( "case-2-1" ) #コメント print( "case-2-2" ) """ print( "case-3-1" )
上記の文を実行すると
case-1-1 case-1-2 case-3-1
と「”””」から「”””」で囲んだ部分が表示されていません。
ネストしている文のコメント化
次にネスト(if文など)をしている文をコメント化します。
a = 2 if a == 1 : print( "case-1-1" ) print( "case-1-2" ) #以下はelif中身をコメント化 elif a == 2 : """ print( "case-2-1" ) #コメント print( "case-2-2" ) """ print( "case-2-3" ) #以下はelif全体をコメント化 """ elif a == 3 : print( "case-3-1" ) print( "case-3-2" ) """ else: print( "case-4-1" ) print( "case-4-2" )
とそれぞれ「”””」から「”””」で囲った部分が実行されません。
上記のソースでは「aが2」なので
case-2-3
とだけ表示されます。
ここで注意事項は
コメント化する「”””」はifやelseの書かれている位置に書くのではなく、条件が成り立った時に実行される位置に書きます。
です。
まとめ
Pythonで複数行を簡単にコメント化するには#ifdefなどの条件コンパイルではなく「”””」を利用して文字列化してしまうことで、それっぽく実現することができます。
以上、Pythonで複数行をコメント化する方法でした。