Python 中单引号、双引号、三重引号的区别完全指南
一、它们都是用来写“字符串”的
在 Python 里,字符串就是一段文字。要把文字写进代码,必须用引号包起来,否则 Python 会把它当成变量名或别的语法。
用来包字符串的引号有三种形式:
| 写法 | 名称 | 示例 |
|---|---|---|
'...' |
单引号 | '你好' |
"..." |
双引号 | "你好" |
'''...''' 或 """...""" |
三重引号(三单或三双) | '''多行''' |
下面分别说明各自的特点和区别。
二、单引号 '...'
2.1 基本用法
用一对单引号把文字包起来,就得到一个字符串。
s = '你好'
print(s) # 输出:你好
s = 'Hello'
print(s) # 输出:Hello
s = '123' # 这也是字符串,不是数字
print(s, type(s)) # 输出:123 <class 'str'>
2.2 什么时候单引号特别方便?
当字符串里面包含双引号时,用单引号包外面,里面的双引号就不用“转义”,写起来更简单。
# 字符串内容里有双引号 "
s = '他说:"你好!"'
print(s) # 输出:他说:"你好!"
s = '请选择 "确定" 或 "取消"'
print(s) # 输出:请选择 "确定" 或 "取消"
如果外面也用双引号,里面的双引号就必须加反斜杠转义(见第五节),比较麻烦。
三、双引号 "..."
3.1 基本用法
用一对双引号把文字包起来,同样得到一个字符串。和单引号在功能上没有区别。
s = "你好"
print(s) # 输出:你好
s = "Hello"
print(s) # 输出:Hello
3.2 什么时候双引号特别方便?
当字符串里面包含单引号(撇号)时,用双引号包外面,里面的单引号就不用转义。
# 字符串内容里有单引号 '
s = "It's a nice day"
print(s) # 输出:It's a nice day
s = "我's 小明"
print(s) # 输出:我's 小明
s = "don't"
print(s) # 输出:don't
如果外面也用单引号,写成 'It's a nice day',Python 会认为字符串在第二个单引号就结束了,后面就会报错。所以这种情况用双引号更省事。
四、单引号和双引号:总结对比
4.1 对 Python 来说,效果一样
对于不包含引号的普通文字,用单引号还是双引号,结果完全一样。
a = '你好'
b = "你好"
print(a == b) # True,两者相等
print(a) # 你好
print(b) # 你好
4.2 区别只在于“方便程度”
| 字符串里包含 | 推荐外面用 | 原因 |
|---|---|---|
双引号 " |
单引号 ' |
里面双引号不用转义 |
单引号 ' |
双引号 " |
里面单引号不用转义 |
| 两种都有 | 任选一种,另一种用转义 |
见下一节 |
示例:里面既有单引号又有双引号
可以选一种包外面,另一种用反斜杠转义:
# 外面用双引号,里面的双引号要转义
s = "他说:"It's OK.""
print(s) # 输出:他说:"It's OK."
五、转义:在字符串里写出引号本身
有时必须“外面和里面用同一种引号”,这时就要用 反斜杠 告诉 Python:这个引号是内容的一部分,不是字符串的结束。
5.1 在双引号字符串里写双引号
# 错误:中间的双引号会让 Python 认为字符串结束了
# s = "他说:"你好"" # 语法错误
# 正确:用 "
s = "他说:"你好""
print(s) # 输出:他说:"你好"
5.2 在单引号字符串里写单引号
# 错误:第二个单引号会提前结束字符串
# s = 'It's OK' # 语法错误
# 正确:用 '
s = 'It's OK'
print(s) # 输出:It's OK
5.3 常见转义字符(顺便了解)
在字符串里, 后面跟特定字符有特殊含义:
| 写法 | 含义 | 示例 |
|---|---|---|
' |
一个单引号 | 'It's' → It’s |
" |
一个双引号 | " say "Hi" " → say “Hi” |
n |
换行 | "anb" 打印成两行 |
t |
制表符(Tab) | "atb" 中间一个 Tab |
\ |
一个反斜杠 | "C:\path" → C:path |
print("第一行n第二行")
# 第一行
# 第二行
print("姓名t年龄")
# 姓名 年龄
print("路径:C:\Users\admin")
# 路径:C:Usersadmin
六、三重引号 '''...''' 和 """..."""
三重引号就是连续三个单引号或连续三个双引号。用来包字符串时,有两个主要用途。
6.1 用途一:写多行字符串(换行可以直接写)
单引号和双引号只能写一行。如果字符串要跨多行,可以:
- 用三重引号把整段包起来,中间直接回车换行;或
- 用
n写在单行里(不方便阅读)
示例:多行字符串
# 用三双引号
text = """第一行
第二行
第三行"""
print(text)
# 第一行
# 第二行
# 第三行
# 用三单引号,效果一样
text = '''第一行
第二行
第三行'''
print(text)
多行字符串里可以有单引号和双引号
只要内容里没有连续三个单引号或三个双引号,一般不需要转义:
s = """他说:"It's a good day."
然后笑了。"""
print(s)
6.2 用途二:文档字符串(docstring)
在函数、类或模块的开头写一个用三重引号包起来的字符串,叫 文档字符串,用来说明这段代码是干什么的。工具和帮助系统会读取它。
def greet(name):
"""向 name 打招呼。这是文档字符串。"""
print("你好,", name)
# 查看文档字符串
print(greet.__doc__) # 输出:向 name 打招呼。这是文档字符串。
小结:三重引号
- 三单
'''和 三双"""在当字符串用时没有区别,选一种即可。 - 都能写多行、都能包含单引号和双引号(除非内容里出现三个连着的同种引号)。
- 除了多行字符串,还常用于函数/类的说明(docstring)。
七、三重引号 vs 单引号/双引号:对比
| 特性 | 单引号 ' / 双引号 " |
三重引号 ''' / """ |
|---|---|---|
| 行数 | 只能一行 | 可以多行 |
| 内容里的引号 | 同种引号要转义或换另一种 | 单双引号一般可直接写 |
| 常见用途 | 短字符串、一行文字 | 多行文字、文档说明 |
示例对比:同一段多行内容
# 用单引号/双引号:必须写 n
s1 = "第一行n第二行n第三行"
print(s1)
# 用三重引号:直接回车
s2 = """第一行
第二行
第三行"""
print(s2)
# 上面两种打印结果相同
八、实际使用建议(新手可照做)
-
普通一行字符串
用单引号或双引号都行;若内容里有双引号,外面用单引号;若内容里有单引号,外面用双引号,这样不用转义。 -
多行字符串
用'''...'''或"""...""",中间直接换行即可。 -
风格尽量统一
比如项目里短字符串都用双引号,多行都用三双引号,读起来更一致。
示例:综合运用
# 短字符串:内容有双引号,外面用单引号
msg = '请点击 "确定"'
# 短字符串:内容有单引号,外面用双引号
msg2 = "It's OK"
# 多行:用三引号
help_text = """
使用说明:
1. 输入姓名
2. 输入年龄
3. 按回车
"""
print(help_text)
九、常见错误示例
9.1 引号不匹配
# 错误:只有一个单引号和一个双引号,不配对
# s = '你好" # 语法错误
# s = "你好' # 语法错误
# 正确:成对出现
s = '你好'
s = "你好"
9.2 内容里的引号提前“结束”了字符串
# 错误:中间的 " 会让 Python 认为字符串结束
# s = "他说:"你好"" # 语法错误
# 正确:外面用单引号,或里面用 "
s = '他说:"你好"'
# 或
s = "他说:"你好""
9.3 三引号只写了两个
# 错误:只写两个引号不是“三重引号”,会报错或含义不同
# s = ''第一行
# 第二行'' # 错误
# 正确:必须是三个
s = '''第一行
第二行'''
十、小结表
| 引号类型 | 写法示例 | 主要特点与用途 |
|---|---|---|
| 单引号 | '文字' |
一行;内容里有双引号时用单引号包外面方便 |
| 双引号 | "文字" |
一行;内容里有单引号时用双引号包外面方便 |
| 三单引号 | '''多行''' |
多行;可含单双引号;常作 docstring |
| 三双引号 | """多行""" |
同上,与三单引号二选一即可 |
| 若字符串里要写… | 做法 |
|---|---|
| 和外面同种的引号 | 用 ' 或 " 转义 |
| 换行 | 用 n,或用三重引号直接回车 |