Pythonの文字列との比較

私はPythonの新機能です。
私が知っているように、このように複数行のコメントがある

"""
this is a comments
"""

しかし、このコードを考慮する

somevariable="""this is a variable"""
print somevariable

これは変数です
コメントと文字列はPythonで同じですか、あるいは異なっていますか?

3

8 答え

最初のものはコメントではなく、文字列です。しかし、文字列のあるもの(印刷、変数への割り当てなど)を実行しているわけではないので、通訳者はすべて「はい、文字列です。それを完全に無視する。効果的にそれをコメントと同じにします。それはインタプリタによって無視されるテキストの任意の束です。

5
追加された

Pythonには複数行のコメントはありません。それらは両方とも単なる文字列です。前者は通常docstringとして使用され、関数/クラス/モジュールに関連付けられ、他方は変数に割り当てられます。

4
追加された

コメントと文字列はPythonで同じですか?

厳密に言えば、それらは同じではありません。しかし、あなたの質問では、あなたが "コメント"と呼んでいるのは、実際には文字列です。コメントは、文字の後に同じ行に表示されるすべてのものです。

a.py:

"""
comment1
"""
# comment2

今:

% strings a.pyc | grep comment
comment1

ご覧のとおり、 comment1 はコメントではないので、 comment2 はコンパイルされたバイトコードの一部ではありません。

他の人が指摘するように、文字列は docstring とみなされます。 docstring は、コードを文書化するために従来から使われていますが、コメントはコメントのために使われていますが、ドキュメントには含まれていません。

2
追加された
+1は、ドキュメントストリングがバイトコードに含まれていることの詳細を指しています。
追加された 著者 Imre Kerr,

はい、同じです

It is called a docstring You can find more information about this type of string here: http://www.pythonforbeginners.com/basics/python-docstrings/

2
追加された

最初のスニペットはコメントではありません。それは文字列です。 Pythonのコメントには接頭辞が付いています。

1
追加された
>>> somevariable="""
... this is not a comment
... """
>>> print(somevariable)

this is not a comment
1
追加された

この混乱はドキュメンタリーを通じてもたらされます。

これは実際にはコメントではありませんが、複数の行で文字列を作る方法です:

>>> """This is a string
... with line breaks"""
'This is a string\nwith line breaks'

同じ記法が、クラスと関数でそれらを文書化するために使用されます。

>>> def my_function():
...     """This function does stupid things."""
...     return 1/0
...
>>> my_function.__doc__
'This function does stupid things.'
>>> my_function()
Traceback (most recent call last):
  File "", line 1, in 
  File "", line 3, in my_function
ZeroDivisionError: division by zero

あなたのコード:

somevariable = """this is a variable"""

本当にちょうど同じです:

somevariable = "this is a variable"
1
追加された

はい、同じです。関数またはクラスの最初のステートメントとしてコメント文字列を含めるのが一般的です。

PEP 257 - ドキュメントストリングの規約を参照してください。

1
追加された