You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用三引号定义多行字符串时缩进变化的原因是什么?

三引号多行字符串缩进问题原因

核心规则

Python 中三引号包裹的多行字符串会完整保留引号范围内的所有空白字符,包括换行符、行首空格、制表符,不会跟随外层代码的缩进逻辑自动修剪内容。

案例拆解

对应的示例代码:

print(
    ''' Hello!
        How are
        you?''')

三引号内部的内容逐行解析如下:

  • 第一行:三引号后紧跟1个空格 + 内容Hello! + 换行符,因此输出第一行内容为 Hello!
  • 第二行:编写代码时为了和外层print的参数缩进对齐,在How are前添加了对应层级的缩进空格(通常为8个),这些空格会全部保留在字符串中,因此第二行输出时行首空格远多于第一行,视觉上对齐到第一行Hello的正下方
  • 第三行:you?前的缩进与第二行一致,同样会完整保留输出

优化方案

如果需要输出的多行字符串无多余前导缩进,可采用两种方案:

  1. 多行字符串内容不跟随外层代码缩进,直接左对齐:
print(
''' Hello!
How are
you?''')
  1. 导入textwrap.dedent方法自动移除所有行的公共前导缩进,保留代码整体缩进美观度:
from textwrap import dedent
print(
    dedent(''' Hello!
        How are
        you?''')
)

内容的提问来源于stack exchange,提问作者meallhour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:15:03