Python中的多行f-string

2024-05-19 15:05:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图为一个国内项目编写符合PEP-8的代码(我必须承认这是我在python世界中的第一步),我得到了一个超过80个字符长的f字符串

-self.text点附近的实线是80个字符的标记。 (很抱歉没有预览的悲伤链接,但我必须有10+代表才能发布)

我试着把它分成不同的线条,用最像Python的方式,但唯一能起作用的是我的绒线错误

工作代码:

def __str__(self):
    return f'{self.date} - {self.time},\nTags:' + \
    f' {self.tags},\nText: {self.text}'

输出:

2017-08-30 - 17:58:08.307055,
Tags: test tag,
Text: test text

林特认为我不尊重PEP-8中的E122,有没有办法让字符串正确并且符合代码?


Tags: 项目字符串代码text标记testself链接
3条回答

来自Style Guide for Python Code

The preferred way of wrapping long lines is by using Python's implied line continuation inside parentheses, brackets and braces.

鉴于此,以下内容将以符合PEP-8的方式解决您的问题。

return (
    f'{self.date} - {self.time}\n'
    f'Tags: {self.tags}\n'
    f'Text: {self.text}'
)

如果没有逗号分隔,Python字符串将自动连接,因此不需要显式调用join()

我想应该是

return f'''{self.date} - {self.time},
Tags: {self.tags},
Text: {self.text}'''

正如@noddy所提到的,该方法也适用于变量赋值表达式:

var1 = "foo"
var2 = "bar"
concat_var = (f"First var is: {var1}"
              f" and in same line Second var is: {var2}")
print(concat_var)

应该给你:

First var is: foo and in same line Second var is: bar

相关问题 更多 >