我的代码:
"""
def
"""
k="""
abc
"""
print(k)
print('abc2')
我尝试运行它:
sam@sam-M51Kr:~/code/python$ python test.py
abc
abc2
sam@sam-M51Kr:~/code/python$
在代码的开头,似乎“”成为评论。
但为什么k是'abc'的两个空行?
谢谢〜
答案 0 :(得分:6)
“”“是一个字符串分隔符。
来自PEP 257
docstring是一个字符串文字,作为模块,函数,类或方法定义中的第一个语句出现。这样的文档字符串成为该对象的
__doc__
特殊属性。
因此,您在方法之后的字符串是注释,其他工具可以使用它来记录您的代码。如果你在其他地方使用未分配的字符串文字,它只是一个注释,以帮助那些阅读代码(除了在上一个链接中提到的几个案例)
在三引号字符串中,允许(并保留)未转义的换行符和引号,除了连续三个未转义的引号终止字符串。 (“引号”是用于打开字符串的字符,即“或”。)
因此包括回车/换行。
答案 1 :(得分:1)
问:“但为什么k是'abc'的两个空行?”
k="""
abc
"""
"""
(也是'''
)是一个多行字符串分隔符, 保留 换行符,所以在初始"""
之后有一个换行符,在abc
之后有换行符,这就是为什么你得到空行。
使用repr()
您可以明确地看到这一点:
repr(k)
"'\\n abc\\n '"
"""
用于以docstring(或this)的形式编写长,多行,字符串或文档辅助工具,正如您所正确指出的那样。< / p>
答案 2 :(得分:1)
""" ... """
只是一个多行字符串。所以
"""
abc
"""
是换行符,然后是abc
,然后是另一个换行符。
答案 3 :(得分:1)
任何对象的第一个未分配字符串,在本例中是一个模块,称为“docstring”。它会自动分配到定义范围内的特殊变量__doc__
。
另一个是多行字符串。这些是“原样”字符串,用于保留嵌入的换行符。因此,指定k
的第一行在字符串的开头和结尾处有换行符。您通常不会在终端中看到它。