簡體   English   中英

字符串文字和字符串值有什么區別?

[英]What is the difference between string literals and string values?

看到這個答案

我認為您的困惑是您將源代碼中字符串文字的概念與實際字符串值混為一談。

字符串文字和字符串值有什么區別? 我不明白這一點。

字符串文字是您可以在程序源代碼中編寫的一段文本,以引號開頭和結尾,告訴 Python 創建具有特定內容的字符串。 看起來像

'asdf'

或者

'''
multiline
content
'''

或者

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

在字符串文字中(原始字符串文字除外),字符串文字中稱為轉義序列的特殊字符序列將替換為實際字符串中的不同字符。 例如,字符串文字中的轉義序列\n將替換為實際字符串中的換行符。 轉義序列以反斜杠開頭。


字符串是表示文本值的 Python object。 它可以從字符串文字構建,也可以從文件中讀取,也可以源自許多其他來源。

字符串中的反斜杠沒有特殊含義,大多數可能的字符串來源中的反斜杠也沒有特殊含義。 例如,如果您有一個包含反斜杠的文件,如下所示:

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"不是同一個字符串文字 - 許多不同的字符串文字可以評估為相等的字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM