1: 2016-12-28 (水) 06:21:52 njf[6] [7] [8] | 2: 2016-12-28 (水) 07:11:19 njf[6] [9] [10] | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | *コメント機能とは [#e21819cf] | ||
プログラムでのコメントとは、ソースコードに記述する、実行には関わらない注釈のことです。 | プログラムでのコメントとは、ソースコードに記述する、実行には関わらない注釈のことです。 | ||
Pythonでも他の言語と同様にコメントが使えますが、ちょっと他とは違う部分もあります。 | Pythonでも他の言語と同様にコメントが使えますが、ちょっと他とは違う部分もあります。 | ||
+ | |||
+ | **コメントを使う前に [#a8790186] | ||
+ | |||
+ | Pythonのver2系では、マルチバイト文字がある場合、そのソースコードの文字コードを指定しないとエラーになります。 | ||
+ | |||
+ | これはコメントにも適用されるため、ソース内に日本語文字列がある場合、それがたとえコメントであっても最初の方に次のコメントを入れ、UTF8で保存する必要があります。 | ||
+ | |||
+ | # -*- coding: utf-8 -*- | ||
+ | |||
+ | これでソースコードの文字コードが認識されます。 | ||
*行コメント [#bdd8ecdd] | *行コメント [#bdd8ecdd] | ||
+ | |||
+ | Pythonでも、他のスクリプト言語などによくあるように「#」を使った行コメントが書けます。 | ||
+ | |||
+ | #これはコメント | ||
+ | |||
+ | print u"コメントのテスト" | ||
+ | |||
+ | 結果 | ||
+ | コメントのテスト | ||
+ | |||
+ | このように実行結果には影響しません。 | ||
+ | |||
+ | また、インデントにも影響しません。 | ||
+ | |||
+ | if True: | ||
+ | #これはコメント | ||
+ | print u"コメントのテスト" #ここにもコメントが書ける | ||
+ | |||
+ | 結果 | ||
+ | コメントのテスト | ||
+ | |||
+ | 一行のコメントならなるべくこちらを使うのがおすすめです。 | ||
+ | |||
+ | *文字列を使った複数行のコメント [#n4ea209e] | ||
+ | |||
+ | 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"コメントのテスト" | ||
+ | |||
+ | 結果 | ||
+ | コメントのテスト | ||
+ | |||
+ | このように複数行のコメントは便利ですが、インデントを気にしないといけないことや、普通の処理としてヒアドキュメントを使っていると、そちらと混じるとわかりづらいという欠点もあります。 | ||
+ | |||
+ | また、「#」によるコメントは最近の統合環境などでは、たいてい複数行を一括で自動でしてくれる機能もあるので、処理を一時的に消すにはそちらの方が便利なこともあります。 | ||
+ | |||
+ | そのせいか、ヒアドキュメントを複数行のコメントとして使うのは、ファイルの先頭や関数、クラスなどの定義のところなど、制御構造と関わりの無い場所で使われることが多いです。 | ||
+ | 単にもともと複数行のコメントを必要とするのがそういう場所と言うだけかも知れませんが。 |
(This host) = https://njf.jp