0

私のコード:

 """
 def
 """
 k="""
 abc
 """
 print(k)
 print('abc2')

私はそれを実行しようとします:

  sam@sam-M51Kr:~/code/python$ python test.py 

  abc

  abc2
  sam@sam-M51Kr:~/code/python$

コードの冒頭では、「"」がコメントになっているようです。

しかし、なぜkは'abc'の2つの空の行なのでしょうか。

ありがとう〜

4

4 に答える 4

6

"""は文字列の区切り文字です。

PEP257から

docstringは、モジュール、関数、クラス、またはメソッド定義の最初のステートメントとして出現する文字列リテラルです。このようなdocstringは、__doc__そのオブジェクトの特別な属性になります。

したがって、メソッドの直後の文字列はコメントであり、他のツールでコードを文書化するために使用できます。割り当てられていない文字列リテラルを他の場所で使用する場合、それはコードを読む人を助けるための単なるコメントです(前のリンクで言及されたいくつかの場合を除く)

Pythonリファレンスから

三重引用符で囲まれた文字列では、エスケープされていない改行と引用符が許可されます(保持されます)。ただし、行内の3つのエスケープされていない引用符は文字列を終了します。(「引用符」は、文字列を開くために使用される文字、つまり'または"のいずれかです。)

したがって、キャリッジリターン/ラインフィードが含まれます。

于 2012-09-01T12:06:50.383 に答える
1

Q:「しかし、なぜkは'abc'の2つの空の行なのですか?」

k="""
 abc
 """

"""(も)は改行を保持する'''複数行の文字列区切り文字であるため、最初のの後に改行があり、その後に空白行が表示されるのはそのためです。"""abc

を使用repr()すると、これを明示的に確認できます。

repr(k)
"'\\n abc\\n '"

"""長い、複数行の文字列を書くために、またはあなたが正しく指摘したように、 docstring(またはthis )の形式でのドキュメントの補助として使用されます。

于 2012-09-01T12:02:34.203 に答える
1

""" ... """単なる複数行の文字列です。それで

"""
abc
"""

は改行で、abc次に別の改行です。

于 2012-09-01T12:03:01.310 に答える
1

オブジェクト(この場合はモジュール)の最初の割り当てられていない文字列は、「docstring」と呼ばれます。__doc__定義されているスコープ内の特別な変数に自動的に割り当てられます。

もう1つは、複数行の文字列です。これらは、埋め込まれた改行文字を保持する「現状のまま」の文字列です。したがって、を割り当てる最初の行にkは、文字列の最初と最後に改行があります。通常、端末には表示されません。

于 2012-09-01T12:06:57.763 に答える