【发布时间】:2018-08-15 07:50:32
【问题描述】:
我们使用oitnb 设置了我们的python 代码库的自动格式化,使用配置文件中的multi-line-unwrap 选项。在此之前,我们对所有带有--meld 的文件进行了初始传递,并插入了适当的fmt: no cmets。
虽然我们使用了 unwrap 选项,但这些 cmets 最常插入带有 .format() 函数的圆形多行字符串。这会重新格式化而不改变:
print('first: {a}\nsecond: {b}\nthird: {c}'.format(a=1, b=2, c=3))
但我们无法真正看到打印的元素是否对齐。我们倾向于使用:
print("""\
first: {a}
second: {b}
third: {c}
""".format(a=1, b=2, c=3))
但这会被使用oitnb 修改为:
print("""\
first: {a}
second: {b}
third: {c}
""".format(
a=1, b=2, c=3
)
)
当这样的打印出现在函数或类方法中时,情况会更糟,因为我们随后用dedent 包装:
def main():
print(dedent("""\
first: {a}
second: {b}
third: {c}
""".format(a=1, b=2, c=3)))
我们也可以解开format 参数吗?或者其他一些新代码的解决方案,所以我们不需要使用 fmt cmets?
【问题讨论】:
-
# fmt: no不会做任何事情。你需要使用# fmt: off
标签: python formatting multiline oitnb