Pythonのコメントの書き方とコメントアウトのルール

このページでは、Pythonのコメントアウトに付いて、

  1. Pythonのコメントの書き方のルール
  2. コメント機能を使ったコメントアウトの方法
  3. 数行にわたるコメントの書き方
  4. 複数行をコメントアウトする時によくあるエラーと対処法

を解説しています。

特に複数行のコメントアウトではよくエラーが見られますので、ここで注意点を押さえておきましょう。

目次

1. Pythonのコメントの書き方

Pythonでコメントを書くには、文頭にハッシュマーク「#」をつけます。

以下をご覧ください。

In [1]:
#四角形の縦の長さ
length = 10
#四角形の横の長さ
size = 5
#面積の計算式
area = length*size
In [2]:
#面積を確認します
print(area)
Out[2]:
50

このように文頭に「#」があると、その行はコメント(注釈)として扱われ、ステートメント(命令文)としては扱われません。

なお、Python3では、下図のようにステートメントの横にコメントを書くこともできます。

In [3]:
length = 10    #四角形の縦の長さ
size = 5    #四角形の横の長さ
area = length*size    #面積の計算式
print(area)    #面積を確認します
Out[3]:
50

見やすい方を選んで使いわけると良いでしょう。

2. Pythonのコメントアウト

コメント機能の特徴を利用して、動作チェックなどのために、一時的に、あるステートメントをコメント化することを「コメントアウト」といいます。

以下をご覧ください。

In [4]:
#四角形の縦の長さ
length = 10
#四角形の横の長さ
size = 5
#size = 10
#面積の計算式
area = length*size 
#面積を確認します
print(area)
Out[4]:
50

5行目に、’#size = 10″という表記がありますが、「#」をつけてコメントアウトしているため、ステートメント(命令文)としては扱われません。

もし5行目をコメントアウトしていなかったら、どうなるでしょうか?

確認してみましょう。

In [5]:
#四角形の縦の長さ
length = 10
#四角形の横の長さ
size = 5
size = 10
#面積の計算式
area = length*size 
#面積を確認します
print(area)
Out[5]:
100

このように、先に書いた’size = 5’ではなく、後から書いた’size = 10’が優先されて、面積の計算結果は「縦10×横10」で「100」になります。

コードを書くようになるとコメントアウトはよく使うようになりますので覚えておきましょう。

3. Pythonの複数行のコメントの書き方

1行のみのコメントアウトは、「#」で十分ですが、他のプログラミング言語のように複数行にまたがるコメントを書きたい場合はどうすれば良いでしょうか?

その場合は、シングルクオート「’」か、ダブルクオート「”」を3個続けたもので、前後を挟むと、囲んだ範囲がコメントになります。

以下をご覧ください。

In [6]:
a = 10
b = 20
'''
3つのシングルクオートで囲んだ
範囲は実行時には無視されます。
'''
"""
3つのダブルクオートで囲んだ
範囲も実行時には無視されます。
"""
sum = a + b
print(sum)
Out[6]:
30

実は、Pythonにはもともと複数行をコメントアウトする機能はありません。

これは、Pythonの「何も出力しない文字列や式があってもエラーにならない」という仕様を利用したもので、ある意味、無理やりコメントを書き加える方法です。

ただし、非常に長いコメントを、ありえないぐらいの数書き加えない限りは、特に問題にならないので、神経質になる必要はないでしょう。

4. Pythonの複数行コメントアウトのエラー

Pythonで複数行をコメントアウトするときに頻出するエラーが2つあります。

  • コメントアウトの中にコメントをする場合
  • インデントが揃っていない場合

です。

それぞれ解説と対処法を見ていきましょう。

4.1. コメントアウトの中にコメントをする場合

以下のように、複数行コメントアウトの中に、別の複数行コメントアウトがあるとエラーになります。

In [7]:
a = 10
b = 20
'''
3つの'''シングルクオート'''で囲んだ範囲に、
別の3つの「'」が重複するとエラーになります。
'''
"""
3つの"""ダブルクオート"""で囲んだ範囲に
別の3つの「"」が重複するとエラーになります。
"""
sum = a + b
print(sum)
Error:
  File "<ipython-input-11-22927c23e1ef>", line 4
    3つの'''シングルクオート'''で囲んだ範囲に、
                     ^
SyntaxError: invalid syntax

しかし、下図のように3つのダブルクオートで囲んだコメントアウトの中に、3つのシングルクオートで囲んだ別のコメントアウトを書いてもエラーにはなりません。

In [8]:
a = 10
b = 20
"""
3つのダブルクオートで囲んだ範囲の中に
'''
3つのシングルクオートで囲んだ別の
コメントアウトを作っても
'''
エラーにはなりません。
"""
sum = a + b
print(sum)
Out[8]:
30

シングルクオートとダブルクオートの順番が逆でも問題ありません。

In [9]:
a = 10
b = 20
'''
3つのシングルクオートで囲んだ範囲の中に
"""
3つのダブルクオートで囲んだ別の
コメントアウトを作っても
"""
エラーにはなりません。
'''
sum = a + b
print(sum)
Out[9]:
30

4.2. インデントが揃っていない場合

また、以下のように、コメントアウトのインデントが揃っていない場合もエラーが出ます。

In [10]:
def main():
    print(test_start)
    """
    test1
    """
"""
test2
"""
    print(test_end)
Error:
  File "<ipython-input-19-afc5a6ba4697>", line 9
    print(test_end)
    ^
IndentationError: unexpected indent

他のプログラミング言語にはないPythonの特徴として、Pythonは「インデントによってプログラムコードの構造を解釈する」というものがあります。

上述のように、3個連続するシングルクオートやダブルクオートによるコメントアウトは、Pythonの「何も出力しない文字列や式があってもエラーにならない」という仕様を利用したものです。

そのため、これらは厳密には、プログラム内の文字列として認識されます。そのためPythonでは、コメントアウトであったとしてもインデントが揃っていなければエラーになります。

以下のようにインデントを合わせれば、このエラーはなくなります。

In [11]:
def main():
    print(test_start)
    """
    test1
    """
    """
    test2
    """
    print(test_end)

なお、通常の「#」を用いたコメントアウトはインデントに煩わされることなく使うことができます。

In [12]:
def main():
    print(test_start)
    """
    test1
    """
#test2
    print(test_end)

5. まとめ

いかがだったでしょうか?

Pythonではハッシュマーク「#」を使ってコメントアウトすることができます。複数行にわたるコメントアウトでは、シングルクオート「’」、またはダブルクオート「”」を3つ続けたもので囲った範囲をコメントとして扱うことができます。

しかし後者のコメントアウトは、Pythonの「何も出力しない文字列や式があってもエラーにならない」という仕様を利用したものであるため、いくつかポイントを押さえておかなければ、エラーが出てしまいます。

ぜひ、これらの点を覚えておきましょう。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる