Ad

コメント機能とは anchor.png Edit

プログラムでのコメントとは、ソースコードに記述する、実行には関わらない注釈のことです。

Pythonでも他の言語と同様にコメントが使えますが、ちょっと他とは違う部分もあります。

Page Top

コメントを使う前に anchor.png Edit

Pythonのver2系では、マルチバイト文字がある場合、そのソースコードの文字コードを指定しないとエラーになります。

これはコメントにも適用されるため、ソース内に日本語文字列がある場合、それがたとえコメントであっても最初の方に次のコメントを入れ、UTF8で保存する必要があります。

# -*- coding: utf-8 -*-

これでソースコードの文字コードが認識されます。

Page Top

行コメント anchor.png Edit

Pythonでも、他のスクリプト言語などによくあるように「#」を使った行コメントが書けます。

#これはコメント

print u"コメントのテスト"

結果

コメントのテスト

このように実行結果には影響しません。

また、インデントにも影響しません。

if True:
#これはコメント
    print u"コメントのテスト" #ここにもコメントが書ける

結果

コメントのテスト

一行のコメントならなるべくこちらを使うのがおすすめです。また、複数行でも制御構造の中でインデントが複雑になっている場所ならこちらのコメントの方があつかいやすいです。

Page Top

文字列を使った複数行のコメント anchor.png Edit

Pythonには文字列がただそれだけソースコードにあったとしても、実際の処理では無視されるという言語仕様があります。

"この文字列は無視される"
print u"コメントのテスト"

結果

コメントのテスト

また、複数行にわたる文字列を「"""」や「'''」で囲んで定義できる、いわゆるヒアドキュメントなどと呼ばれる機能があります。

hd = """複数行の文字列が
書けます。"""

print hd

結果

複数行の文字列が
書けます。

これらのことから、ヒアドキュメントを使って複数行のコメントを実現できます。(1行のコメントは「#」を使えば良いので、普通使いません。)

'''
複数行のコメントとして
書ける
'''
print u"コメントのテスト"

結果

コメントのテスト

ただし、これは本当のコメントのように構文解析が完全に行われないわけではありません。 そのため、インデントがおかしいとエラーとなります。

if True:
'''
こう書くと
インデントがおかしいのでダメ
'''
    print u"コメントのテスト"

結果

  File "comment_test.py", line 18
    '''
      ^
IndentationError: expected an indented block

インデントを整えれば制御構造の中でも複数行のコメントが使えます。

if True:
    '''
インデントすれば
OK
'''
    print u"コメントのテスト"

結果

コメントのテスト

このように複数行のコメントは便利ですが、インデントを気にしないといけないことや、普通の処理としてヒアドキュメントを使っていると、そちらと混じるとわかりづらいという欠点もあります。

また、「#」によるコメントは最近の統合環境などでは、たいてい複数行を一括で自動でコメントアウトしたり、元に戻したりしてくれる機能もあるので、処理を一時的に消すにはそちらの方が便利なこともあります。

そのせいか、ヒアドキュメントを複数行のコメントとして使うのは、ファイルの先頭や関数、クラスなどの定義のところなど、制御構造と関わりの無い場所で使われることが多いです。

特に関数やクラスの先頭で使われるものを「ドキュメントストリング」と呼び、「__doc__ 」で参照することが可能です。ドキュメントストリングについては「Python​/関数定義」を参照してください。


Front page   Edit Freeze Diff Backup Upload Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1091, today: 1, yesterday: 0
Princeps date: 2016-12-28 (Wed) 06:21:52
Last-modified: 2017-01-02 (Mon) 07:06:33 (JST) (868d) by njf
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失


NJF