274

OK、トリプルクォートの文字列が複数行のコメントとして機能する可能性があることは承知しています。例えば、

"""Hello, I am a 
   multiline comment"""

'''Hello, I am a 
   multiline comment'''

しかし、技術的に言えば、これらは文字列ですよね?

私はグーグルでPythonスタイルガイドを読みましたが、複数行の/ **/タイプのコメントが正式に実装されていない理由に対する技術的な答えを見つけることができませんでした。三重引用符を使用しても問題はありませんが、この設計上の決定につながった理由について少し興味があります。

4

18 に答える 18

281

「グイドは複数行のコメントの必要性を感じなかった」よりも良い答えが得られるとは思えません。

Guido はこれについて次のようにツイートしています。

Python のヒント: 複数行の文字列を複数行のコメントとして使用できます。docstring として使用しない限り、コードは生成されません! :-)

于 2008-12-29T05:06:00.727 に答える
60

複数行のコメントは壊れやすいです。簡単な電卓プログラムに次のようなものがあるとしたら?

operation = ''
print("Pick an operation:  +-*/")
# Get user input here

複数行のコメントでコメントしてみてください:

/*
operation = ''
print("Pick an operation:  +-*/")
# Get user input here
*/

おっと、文字列に終了コメント区切り文字が含まれています。

于 2008-12-29T15:44:08.537 に答える
38

三重引用符で囲まれたテキストは、複数行のコメントと見なされるべきではありません。慣例により、それらはdocstringです。コードの機能と使用方法を説明する必要がありますが、コード ブロックのコメント アウトなどについては説明しないでください。

Guido によると、Python の複数行のコメントは、連続した 1 行のコメントにすぎません(「ブロック コメント」を検索してください)。

コード ブロックにコメントを付けるために、次のパターンを使用することがあります。

if False:
    # A bunch of code
于 2008-12-29T14:16:05.953 に答える
30

これは、タスクを実行するための明確な方法が 1 つあるはずであるというコア コンセプトに戻る可能性があります。コメント スタイルを追加すると、不要な複雑さが増し、読みやすさが低下する可能性があります。

于 2008-12-29T05:04:11.167 に答える
12

三重引用符は、docstring で複数行のコメントとして使用されます。そして # コメントはインライン コメントとして使用され、人々はそれに慣れます。

ほとんどのスクリプト言語には複数行コメントもありません。もしかしてそれが原因?

PEP 0008のセクションコメントを参照してください。

また、Python エディターがブロック コメント用のキーボード ショートカットを提供しているかどうかを確認してください。Emacs は Eclipse と同様にそれをサポートしており、おそらくまともな IDE のほとんどがサポートしています。

于 2008-12-29T05:05:00.450 に答える
9

The Zen of Pythonから:

それを行う明白な方法が 1 つ (できれば 1 つだけ) ある必要があります。

于 2008-12-29T16:18:23.820 に答える
5

個人的には、Java での私のコメント スタイルは次のようなものです。

/*
 * My multi-line comment in Java
 */

したがって、スタイルが前の例に典型的である場合、単一行のみのコメントを使用することはそれほど悪いことではありません。

#
# My multi-line comment in Python
#

VB.NET は 1 行のコメントのみの言語でもあります。個人的には、コメントが好きなコメントではなく、ある種の引用のように見えるので、個人的には面倒です。

'
' This is a VB.NET example
'

単一行のみのコメントは、複数行のコメントよりも文字の使用が少なくなり、正規表現ステートメントで危険な文字によってエスケープされる可能性が低くなりますか? 私はネッドに同意する傾向があります。

于 2008-12-29T16:27:01.320 に答える
4
# This
# is
# a 
# multi-line
# comment

これを行うには、エディターでコメント ブロックまたは検索と置換 (s/^/#/g) を使用します。

于 2008-12-29T15:17:54.503 に答える
3

これを解決するには、テキスト エディター (TextPad) 用のマクロをダウンロードして行を強調表示し、各行の先頭に # を挿入します。同様のマクロは # を削除します。なぜ複数行が必要なのかと尋ねる人もいるかもしれませんが、デバッグ目的でコードのブロックを「オフ」にしようとしているときに便利です。

于 2012-11-15T09:54:37.933 に答える
3

Python で複数行のコメントを探している人にとっては、三重引用符形式を使用すると、問題のある結果が生じる可能性があります。このことを考慮:

this_dict = {
    'name': 'Bob',

"""
This is a multiline comment in the middle of a dictionary
"""

    'species': 'Cat'
}

複数行のコメントが次の文字列に押し込まれ、 'species'キーがめちゃくちゃになります。#コメントのみに使用することをお勧めします。

于 2019-07-18T12:49:39.963 に答える
0

# の規則は一般的なものであり、複数行のコメントでできることは # 記号のコメントでできることではありません。/* ... */PL/I にさかのぼるコメントの祖先のように、これは歴史的な事故です。

于 2008-12-29T06:01:33.953 に答える
0

それらが単に不必要であると考えられていたと仮定してください。と入力するだけで簡単にできるので#a comment、複数行のコメントは多くの 1 行のコメントで構成できます。

一方、HTMLの場合は、マルチライナーがさらに必要になります。タイピングし続けるのが難しくなります<!--comments like this-->

于 2008-12-29T05:35:39.730 に答える
0

これは単なる推測ですが..

それらは文字列であるため、何らかの意味値を持ちます (コンパイラーはそれらを削除しません)。それらは実際にはASTの一部になるため、ドキュメントの抽出が容易になります。

于 2008-12-29T05:38:01.223 に答える
0

その上、複数行のコメントは雌犬です。申し訳ありませんが、言語に関係なく、デバッグ目的以外には使用しません。次のようなコードがあるとします。

void someFunction()
{
    Something
    /*Some comments*/
    Something else
}

次に、デバッガーで修正できないコードが含まれていることが判明したため、これらの複数行コメントを使用してコードの小さな塊をどんどんコメントアウトして、手動でデバッグを開始します。これにより、次の関数が得られます。

void someFunction()
{ /*
    Something
   /* Comments */
   Something more*/
}

これは本当にイライラします。

于 2008-12-29T16:28:12.333 に答える
-1

複数行のコメントを 3 重引用符で囲まれた変数に入れるという 1 人の男のことを読んだことを覚えています。

x = '''
This is my
super-long mega-comment.
Wow there are a lot of lines
going on here!
'''

これは少しメモリを消費しますが、複数行のコメント機能を提供し、さらにほとんどのエディターは構文を強調表示します:)

コードを次のようにラップするだけで、コードを簡単にコメントアウトすることもできます。

x = '''

'''
于 2011-06-19T14:27:14.870 に答える