最近Pythonの勉強を始めましたが、複数行コメントを実装する方法が見つかりませんでした。ほとんどの言語には次のようなブロックコメント記号があります
/*
*/
これをPythonで試しましたが、エラーが発生するため、これはおそらく正しい方法ではありません。Pythonには実際には複数行コメント機能がありますか?
最近Pythonの勉強を始めましたが、複数行コメントを実装する方法が見つかりませんでした。ほとんどの言語には次のようなブロックコメント記号があります
/*
*/
これをPythonで試しましたが、エラーが発生するため、これはおそらく正しい方法ではありません。Pythonには実際には複数行コメント機能がありますか?
回答:
三重引用符で囲まれた文字列を使用できます。それらがdocstring(クラス/関数/モジュールの最初のもの)でない場合、それらは無視されます。
'''
This is a multiline
comment.
'''
(を'''
避けるために、先頭を適切にインデントしてくださいIndentationError
。)
Guido van Rossum(Pythonの作成者)がこれを「プロのヒント」としてツイートしました。
ただし、PythonのスタイルガイドであるPEP8では、連続した単一行コメントの使用が推奨されており、これも多くのプロジェクトで見られるものです。テキストエディタには通常、これを簡単に行うためのショートカットがあります。
test.py
見やすいように、Pythonスクリプトに巨大な複数行の文字列を挿入しました。するとimport test
、test.pyc
ファイルが生成されます。残念ながら、pyc
ファイルは巨大で、文字列全体がプレーンテキストとして含まれています。私は何かを誤解していますか、またはこのツイートは間違っていますか?
pyc
。私は答えを編集して、「モジュール」をdocstringを持つもののリストに追加しました。
"""
docstringと'''
ブロックコメントに使用すると便利です。このようにして'''
、競合することなく通常のdocstringをラップすることができます。
#
。
Pythonには、複数行の文字列/コメント構文があります。というのは、docstringとして使用されない限り、複数行の文字列は -で#
始まるコメントのようにバイトコードを生成しないという意味です。実際には、コメントとまったく同じように機能します。
一方、この動作を公式のドキュメントに記載して真のコメント構文にする必要があると言う場合は、そうです、言語仕様の一部として保証されていないと言うのは当然です。
いずれの場合でも、テキストエディタは、選択した領域を簡単にコメントアウトできる必要があります(#
各行の前に個別にを配置することにより)。そうでない場合は、テキストエディターに切り替えます。
特定のテキスト編集機能を持たないPythonでのプログラミングは、辛い経験になる場合があります。適切なエディターを見つける(およびそれを使用する方法を知る)と、Pythonプログラミングエクスペリエンスの認識に大きな違いが生まれます。
テキストエディターは、選択した領域をコメントアウトできるだけでなく、コードのブロックを簡単に左右にシフトできる必要がありますEnter。また、を押すと、カーソルが現在のインデントレベルに自動的に配置されます。コードの折りたたみも便利です。
リンクの崩壊を防ぐために、Guido van Rossumのツイートの内容は次のとおりです。
@BSUCSClub Pythonのヒント:複数行の文字列を複数行のコメントとして使用できます。ドキュメント文字列として使用しない限り、コードは生成されません。:-)
受け入れられた答えから...
三重引用符で囲まれた文字列を使用できます。docstring(クラス/関数/モジュールの最初のもの)でない場合、それらは無視されます。
これは単に真実ではありません。コメントとは異なり、三重引用符で囲まれた文字列は引き続き解析され、ソースコードのどこに出現しても、構文的に有効でなければなりません。
このコードを実行しようとすると...
def parse_token(token):
"""
This function parses a token.
TODO: write a decent docstring :-)
"""
if token == '\\and':
do_something()
elif token == '\\or':
do_something_else()
elif token == '\\xor':
'''
Note that we still need to provide support for the deprecated
token \xor. Hopefully we can drop support in libfoo 2.0.
'''
do_a_different_thing()
else:
raise ValueError
あなたはどちらかを得るでしょう...
ValueError: invalid \x escape
... Python 2.xまたは...
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 79-80: truncated \xXX escape
... Python 3.xの場合。
パーサーによって無視される複数行コメントを行う唯一の方法は...
elif token == '\\xor':
# Note that we still need to provide support for the deprecated
# token \xor. Hopefully we can drop support in libfoo 2.0.
do_a_different_thing()
r'raw string'
- を使用できますr'\xor' == '\\xor'
。
'''
「コメント」にはさらに制限があります。コメントはステートメント全体しかコメント化できませんが、コメントは式の一部をコメント化できます。例:Cでは、いくつかのリスト要素をコメント化できますint a[] = {1, 2, /* 3, 4, */ 5};
。複数行の文字列では、リスト内に文字列が入るため、これを行うことはできません。
Python 2.7では、複数行コメントは次のとおりです。
"""
This is a
multilline comment
"""
クラスの内部にいる場合は、タブを正しく設定する必要があります。
例えば:
class weather2():
"""
def getStatus_code(self, url):
world.url = url
result = requests.get(url)
return result.status_code
"""
weather2
コメントはクラスの最初のものであるため、コメントは実際にはdocstringです。
AFAIK、Pythonにはブロックコメントがありません。個々の行にコメントを付けるには、#
文字を使用できます。
あなたが使用している場合は、メモ帳++を、コメントブロックのショートカットがあります。gVimやEmacsなどの他の機能にも同様の機能があると思います。
コメントを入れたら
"""
long comment here
"""
スクリプトの途中で、Python /リンターはそれを認識しません。上記のコメントは標準的な推奨事項の一部ではないため、折りたたみはめちゃくちゃになります。使う方がいい
# Long comment
# here.
Vimを使用している場合は、commentary.vimのようなプラグインを使用して、を押すとコメントの長い行を自動的にコメント化できますVjgcc
。WhereはVj
2行のコードを選択し、gcc
コメント化します。
上記のようなプラグインを使用したくない場合は、検索と置換を使用できます
:.,.+1s/^/# /g
これにより、現在の行と次の行の最初の文字がに置き換えられ#
ます。
複数行コメントなどの機能はありません。#
1行のコードにコメントする唯一の方法です。あなたの多くは、解決策としてこれに「コメント」と答えました。
動作しているよう'''
ですが、Pythonの内部では通常の文字列として囲まれた行が解釈され、インタプリタはを使用し#
たコメントのように無視しません。
残念ながら、文字列化は常にコメントアウトとして使用できるわけではありません。したがって、各行の先頭に#
。を付けるという標準に従うほうが安全です。
次に例を示します。
test1 = [1, 2, 3, 4,] # test1 contains 4 integers
test2 = [1, 2, '''3, 4,'''] # test2 contains 2 integers **and the string** '3, 4,'
さて、あなたはこれを試すことができます(引用を実行するとき、最初の質問への入力はで引用されるべきです'
):
"""
print("What's your name? ")
myName = input()
print("It's nice to meet you " + myName)
print("Number of characters is ")
print(len(myName))
age = input("What's your age? ")
print("You will be " + str(int(age)+1) + " next year.")
"""
a = input()
print(a)
print(a*5)
間"""
に囲まれたものはすべてコメントされます。
単一行のコメントを探しているなら、それ#
です。
Pythonのインラインコメントはハッシュ文字で始まります。
hello = "Hello!" # This is an inline comment
print(hello)
こんにちは!
文字列リテラル内のハッシュ文字は単なるハッシュ文字であることに注意してください。
dial = "Dial #100 to make an emergency call."
print(dial)
#100をダイヤルして緊急電話をかけます。
ハッシュ文字は、1行または複数行のコメントにも使用できます。
hello = "Hello"
world = "World"
# First print hello
# And print world
print(hello)
print(world)
こんにちは
世界
docstringをサポートするために、テキストを三重二重引用符で囲みます。
def say_hello(name):
"""
This is docstring comment and
it's support multi line.
:param name it's your name
:type name str
"""
return "Hello " + name + '!'
print(say_hello("John"))
こんにちは、ジョン!
ブロックコメントの場合は、テキストを三重一重引用符で囲みます。
'''
I don't care the parameters and
docstrings here.
'''
Python 2.7.13の場合:
シングル:
"A sample single line comment "
マルチライン:
"""
A sample
multiline comment
on PyCharm
"""
Pythonで複数行のコードを#
コメント化するには、すべての行で1行のコメントを使用するだけです。
# This is comment 1
# This is comment 2
# This is comment 3
Pythonで「適切な」複数行コメントを書き込むには、Pythonに"""
ドキュメント文字列(またはdocstrings)機能の構文を持つ複数行文字列を使用します。これにより、プログラマはすべてのPythonモジュール、関数、クラス、メソッドに簡単なメモを簡単に追加できます。
'''
This is
multiline
comment
'''
また、次のようなクラスオブジェクトでdocstringにアクセスできることにも言及してください。
myobj.__doc__
以下を使用できます。これはDockStringと呼ばれます。
def my_function(arg1):
"""
Summary line.
Extended description of function.
Parameters:
arg1 (int): Description of arg1
Returns:
int: Description of return value
"""
return arg1
print my_function.__doc__
"""
複数行コメントには使用しないことをお勧めします!
予期しない動作と見なされる可能性があることを強調する簡単な例を次に示します。
print('{}\n{}'.format(
'I am a string',
"""
Some people consider me a
multi-line comment, but
"""
'clearly I am also a string'
)
)
次に、出力を確認します。
I am a string
Some people consider me a
multi-line comment, but
clearly I am also a string
複数行の文字列はコメントとして扱われませんでしたが、連結さ'clearly I'm also a string'
れて単一の文字列を形成しました。
複数行にコメントを付けたい場合は、PEP 8ガイドラインに従ってください。
print('{}\n{}'.format(
'I am a string',
# Some people consider me a
# multi-line comment, but
'clearly I am also a string'
)
)
出力:
I am a string
clearly I am also a string
lang-bash
」の代わりに「bash
」シンタックスハイライトのために?いずれにせよ、それは実際には奇妙に見えます(たとえば、ここでは"Some"の場合)-それが実際にパラメーター付きのコマンドラインコマンドであっても。lang-none
(構文の強調表示がオフになっている)の方が良い選択です。
PyCharm IDEを使用する。
次のことが可能
comment
とuncomment
使用してコードの行はCtrl + /を。Ctrl + /は、現在の行または選択した複数の行を単一行コメントでコメント化またはコメント解除します({# in Django templates, or # in Python scripts)
。Pressing Ctrl+Shift+/
Djangoテンプレート内のソースコードの選択されたブロックについては、ブロックを{% comment %} and {% endcomment %}
タグで囲みます。
n = 5
while n > 0:
n -= 1
if n == 2:
break
print(n)
print("Loop ended.")
すべての行を選択してを押します Ctrl + /
# n = 5
# while n > 0:
# n -= 1
# if n == 2:
# break
# print(n)
# print("Loop ended.")
複数行コメントは実際にはPythonには存在しません。次の例は、構文エラーについてPythonによって検証される未割り当ての文字列で構成されています。
Notepad ++のようないくつかのテキストエディタは、書かれたコードや単語をコメント化するショートカットを提供します。
def foo():
"This is a doc string."
# A single line comment
"""
This
is a multiline
comment/String
"""
"""
print "This is a sample foo function"
print "This function has no arguments"
"""
return True
また、Ctrl+ KはNotepad ++のコメントをブロックするショートカットです。#
選択範囲のすべての行の前にを追加します。Ctrl+ Shift+ Kはブロックのコメント解除用です。
他の答えの中で、私は最も簡単な方法は、のPythonコメントサポートを使用するIDEコメント関数を使用することです#
。
私はAnaconda Spyderを使用していますが、それは次のとおりです:
単一/複数行のコードをコメント/コメント解除し#
ます。
私はそれが最も簡単だと思います。
たとえば、ブロックコメント:
# =============================================================================
# Sample Commented code in spyder
# Hello, World!
# =============================================================================
コメントする行を選択し、Ctrl+ ?を使用してSublime TextエディターでPythonコードをコメント化またはコメント解除します。
1行の場合はShift+ を使用できます#。
#
がコメントを書く唯一の方法であると思います。この方法でPythonスクリプトを簡単に解釈できるようになると思います。