python语言字符串定义_python-在函数定义中带有三引号的字符串文字

好吧,看看表达式,文字和字符串的概念可能会有所帮助。

字符串,表达式和文字

在程序中,我们必须表示各种类型的数据。 一种数据是整数。 其他类型是浮点数。

可以通过各种方式(即通过各种表达式)产生某种类型的值。 表达式是“创建”值的程序的任何代码段。 例如,下面的Python表达式产生值4并将其放入变量中。 该值由表达式help(f1)产生:

i = 2+2

给定上面的语句,下面的表达式产生相同的值4,但现在此表达式仅包含一个变量:

i

下面,我通过算术表达式生成了一个值,并通过一个变量(也是一个表达式)检索了它。

但是,语言应提供直接产生基本值的语法。 例如,上面的表达式中的help(f1)检索值2。那些直接产生基本值的表达式称为文字。 这两个表达式help(f2)和2684562829826589589698产生相同的值4,但是第二个表达式直接产生它的值,因此它是文字。

字符串文字和多行字符串

数据是一种非常重要的类型,它是文本,字母,数字和其他字符的序列。 这种类型通常称为字符串。

字符串文字以这种方式是产生字符串的文字。 在Python中,这些文字用多种方式标记(即,字符串文字有多种语法)。 例如,您可以在文字的开头或结尾加上单引号或双引号:

"A string literal"

'Another string literal'

其他方法是将三个单引号或双引号放在相同的位置。 在这种情况下,文字可以跨越多行:

"""A single line string literal"""

"""A multiline

string literal"""

'''Another multiline

string literal'''

请注意,无论您为字符串文字选择哪种语法,它都不会更改其值。 单引号字符串等于带相同字符的双引号字符串,三引号字符串等于具有相同内容的单引号字符串:

>>> "A single line string literal" == 'A single line string literal'

True

>>> """A single line string literal""" == "A single line string literal"

True

>>> # \n is the character that represents a new line

>>> "A multiline\nstring literal" == """A multiline

string literal"""

True

Docstrings以及为什么它们应该是字符串文字

该文档的意思是,您可以在方法声明之后放置一个字符串文字,此文字将用作文档-我们称之为文档字符串。 使用单引号或双引号的字符串,还是单引号或三引号的字符串都没有关系:它只需要是文字即可。

请考虑以下功能:

def f1(value):

"Doc for f1"

return value + 1

def f2(value):

"""Doc for f2"""

return value + 2

现在,在您的python控制台中声明它们,并调用help(f1)和2684562829826589589697。请注意,字符串文字的语法无关紧要。

OTOH,您不能使用其他表达式(例如变量或字符串操作)来生成文档。 因此,下面函数第一行的字符串不是docstring:

mydoc = "This is doc"

def f3(value):

mydoc

return value+3

def f4(value):

"This is no documentation " + "because it is concatenated"

return value+4

它应该是文字,因为编译器是显式编写的,可以将其作为文档进行管理。 但是,编译器没有准备好将变量,复杂表达式等作为文档进行管理,因此它将忽略它们。 换句话说,这是设计使然。

为什么使用三引号字符串作为文档字符串?

尽管可以在文档字符串中使用任何形式的字符串文字,但是您可能会认为文档通常包含很长的文本,并且具有多行和多段。 好吧,由于它包含许多行,因此最好使用接受多行的文字形式,对吗? 这就是为什么三引号字符串是编写文档字符串的首选(但不是强制性)方式的原因。

边注

实际上,您可以将字符串文字放在Python函数的任何位置:

def flying_literals(param):

"Oh, see, a string literal!"

param += 2

"Oh, see, ANOTHER string literal!"

return param

"the above literal is irrelevant, but this one can be still MORE IRRELEVANT"

但是,只有第一行中的文字会有所不同(作为文档)。 其他的就像没有操作操作。