Python使用三引号定义多行字符串时缩进变化的原因是什么?
三引号多行字符串缩进问题原因
核心规则
Python 中三引号包裹的多行字符串会完整保留引号范围内的所有空白字符,包括换行符、行首空格、制表符,不会跟随外层代码的缩进逻辑自动修剪内容。
案例拆解
对应的示例代码:
print( ''' Hello! How are you?''')
三引号内部的内容逐行解析如下:
- 第一行:三引号后紧跟1个空格 + 内容
Hello!+ 换行符,因此输出第一行内容为Hello! - 第二行:编写代码时为了和外层
print的参数缩进对齐,在How are前添加了对应层级的缩进空格(通常为8个),这些空格会全部保留在字符串中,因此第二行输出时行首空格远多于第一行,视觉上对齐到第一行Hello的正下方 - 第三行:
you?前的缩进与第二行一致,同样会完整保留输出
优化方案
如果需要输出的多行字符串无多余前导缩进,可采用两种方案:
- 多行字符串内容不跟随外层代码缩进,直接左对齐:
print( ''' Hello! How are you?''')
- 导入
textwrap.dedent方法自动移除所有行的公共前导缩进,保留代码整体缩进美观度:
from textwrap import dedent print( dedent(''' Hello! How are you?''') )
内容的提问来源于stack exchange,提问作者meallhour
相关产品推荐
相关产品推荐

