Python f-strings:长字符串的缩进?
Python f-strings: indentation for long strings?
我在 Python 中面临长 f 字符串表达式的(审美)问题。例如,这个代码片段
if __name__ == '__main__':
x_true = 3
x_prov = 4
assert x_prov == x_true, f'The provided value for x, namely {x_prov}, is invalid, \
the true value should be {x_true}!'
给出以下错误,这当然是完全可以预料的:
AssertionError: The provided value for x, namely 4, is invalid, the true value should be 3!
错误消息中有一个不需要的缩进,但我认为它看起来非常难看。避免这种情况的一种方法是编写
if __name__ == '__main__':
x_true = 3
x_prov = 4
assert x_prov == x_true, f'The provided value for x, namely {x_prov}, is invalid, \
the true value should be {x_true}!'
# Do sth else.
然而,这对我来说也很难看,因为现在字符串的第二行与外部 '__main__'
函数具有相同的缩进。有没有办法让 AssertionError 正确显示 而 不必将代码缩进为外部函数?
是的,利用隐式字符串连接,您可以这样做:
if __name__ == "__main__":
x_true = 3
x_prov = 4
assert x_prov == x_true, (
f"The provided value for x, namely {x_prov}, is invalid,"
f" the true value should be {x_true}!"
)
有2个案例可以解决您的问题。
- 创建一个带括号的表达式。
示例:
(f"First part of f-string"
f"Second part of f-string")
- 在 f-string 之后用 \ 分隔符创建一个多字符串。
示例:
f"Some_part" \
f"Another part"
我在 Python 中面临长 f 字符串表达式的(审美)问题。例如,这个代码片段
if __name__ == '__main__':
x_true = 3
x_prov = 4
assert x_prov == x_true, f'The provided value for x, namely {x_prov}, is invalid, \
the true value should be {x_true}!'
给出以下错误,这当然是完全可以预料的:
AssertionError: The provided value for x, namely 4, is invalid, the true value should be 3!
错误消息中有一个不需要的缩进,但我认为它看起来非常难看。避免这种情况的一种方法是编写
if __name__ == '__main__':
x_true = 3
x_prov = 4
assert x_prov == x_true, f'The provided value for x, namely {x_prov}, is invalid, \
the true value should be {x_true}!'
# Do sth else.
然而,这对我来说也很难看,因为现在字符串的第二行与外部 '__main__'
函数具有相同的缩进。有没有办法让 AssertionError 正确显示 而 不必将代码缩进为外部函数?
是的,利用隐式字符串连接,您可以这样做:
if __name__ == "__main__":
x_true = 3
x_prov = 4
assert x_prov == x_true, (
f"The provided value for x, namely {x_prov}, is invalid,"
f" the true value should be {x_true}!"
)
有2个案例可以解决您的问题。
- 创建一个带括号的表达式。 示例:
(f"First part of f-string"
f"Second part of f-string")
- 在 f-string 之后用 \ 分隔符创建一个多字符串。 示例:
f"Some_part" \
f"Another part"