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'的两个空行?

谢谢~

4

4 回答 4

6

""" 是字符串分隔符。

PEP 257

文档字符串是作为模块、函数、类或方法定义中的第一条语句出现的字符串文字。这样的文档字符串成为该__doc__对象的特殊属性。

因此,方法后面的字符串是注释,其他工具可以使用它来记录您的代码。如果您在其他地方使用未分配的字符串文字,它只是帮助阅读代码的人的注释(上一个链接中提到的几种情况除外)

来自python参考

在三引号字符串中,允许(并保留)未转义的换行符和引号,除非一行中的三个未转义的引号终止字符串。(“引号”是用于打开字符串的字符,即 ' 或 "。)

因此包括回车/换行。

于 2012-09-01T12:06:50.383 回答
1

问: “但是为什么 k 是两个带有‘abc’的空行?”

k="""
 abc
 """

"""(also ''') 是保留换行符的多行字符串定界符,因此在 initial 之后有一个换行符,在此之后有一个换行符,"""abc就是你得到空行的原因。

使用repr()你可以明确地看到这一点:

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

"""用于编写长的、多行的、字符串,或作为文档字符串(或this)形式的文档辅助,正如您也正确指出的那样。

于 2012-09-01T12:02:34.203 回答
1

""" ... """只是一个多行字符串。所以

"""
abc
"""

是一个换行符,然后是abc另一个换行符。

于 2012-09-01T12:03:01.310 回答
1

任何对象(在本例中为模块)的第一个未分配字符串称为“文档字符串”。它会自动分配给__doc__定义它的范围内的特殊变量。

另一个是多行字符串。这些是保留嵌入换行符的“原样”字符串。因此,分配 的第一行在k字符串的开头和结尾都有一个换行符。您通常不会在终端中看到它。

于 2012-09-01T12:06:57.763 回答