字符串文字和字符串值有什么区别?

问题描述 投票:6回答:1

参见此answer

[我认为您的困惑是您将源代码中的字符串文字与实际的字符串值混合在一起。

字符串文字和字符串值之间有什么区别?我不明白。

python string string-literals
1个回答
13
投票

字符串文字是您可以在程序的源代码中编写的一段文本,以引号开头和结尾,这告诉Python创建具有某些内容的字符串。看起来像

'asdf'

'''
multiline
content
'''

'the thing at the end of this one is a line break\n'

在字符串文字中(原始字符串文字除外),字符串文字中称为转义序列的特殊字符序列将替换为实际字符串中的不同字符。例如,将字符串文字中的转义序列\n替换为实际字符串中的换行符。转义序列以反斜杠开头。


字符串是表示文本值的Python对象。它可以从字符串文字中构建,或者可以从文件中读取,或者可以源自许多其他来源。

字符串中的反斜杠没有特殊含义,大多数可能的字符串源中的反斜杠也没有特殊含义。例如,如果您的文件中带有反斜杠,则如下所示:

asdf\n

您也愿意

with open('that_file.txt') as f:
    text = f.read()

文件中的\n不会被换行符代替。反斜杠在字符串文字中是特殊的,但在大多数其他上下文中不是。


[当您通过调用repr或通过交互式显示该字符串来要求字符串的repr表示形式时:

>>> some_string = "asdf"
>>> some_string
'asdf'

Python将构建一个新字符串,其内容是一个字符串文字,该字符串文字的值将等于原始字符串。在此示例中,some_string中没有'"字符。字符串的内容是四个字符asdf,如果您是print字符串,则显示的字符为:

>>> print(some_string)
asdf

但是,repr表示形式中包含'个字符,因为'asdf'是一个字符串文字,其求值结果为字符串。请注意,'asdf'与我们最初使用的"asdf"是不同的字符串文字-许多不同的字符串文字可以求值相等的字符串。

© www.soinside.com 2019 - 2024. All rights reserved.