【问题标题】:What is the difference between string literals and string values?字符串文字和字符串值有什么区别?
【发布时间】:2020-05-23 16:41:20
【问题描述】:

看到这个answer

我认为您的困惑在于您将源代码中字符串文字的概念与实际字符串值混为一谈。

字符串字面量和字符串值有什么区别?这个我没看懂。

【问题讨论】:

  • 字符串文字是您在源代码中键入的内容。字符串值是您print 时输出的值。

标签: python string string-literals


【解决方案1】:

字符串文字是您可以在程序源代码中编写的一段文本,以引号开头和结尾,它告诉 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" 不是同一个字符串文字 - 许多不同的字符串文字可以计算为相等的字符串。

【讨论】:

  • 不错的答案!所以 Python 源代码中的 'abcd' 是 string literal 而不是 string,对吧?
  • @NSR: 'abcd' 是字符串文字。
  • 可以从字符串字面量构建是什么意思?
  • @NSR:这意味着获取字符串的方法之一是让 Python 执行字符串文字。
  • 如何执行字符串文字? - 我不确定使用的单词,可能是因为我的英语不好。
猜你喜欢
  • 2011-11-13
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 2018-11-12
  • 2011-03-19
  • 2010-09-17
相关资源
最近更新 更多