Python “连接”或“格式化”字符串更好吗?

Python “连接”或“格式化”字符串更好吗?,python,concatenation,Python,Concatenation,哪个更快-更高效-更合适 加入 string=“你好” concatenate=”“.join([string,“World”]) 打印(连接) 或 格式 string=“你好” concatenate=f“{string}世界” 打印(连接) 我们可以使用join()函数将字符串与分隔符连接起来。当我们有一个字符串序列时,它很有用,例如字符串列表或元组。 比方说- s1 = 'Hello' s2 = 'World' print('Concatenated String using join

哪个更快-更高效-更合适

加入

string=“你好”
concatenate=”“.join([string,“World”])
打印(连接)

格式

string=“你好”
concatenate=f“{string}世界”
打印(连接)
我们可以使用join()函数将字符串与分隔符连接起来。当我们有一个字符串序列时,它很有用,例如字符串列表或元组。 比方说-

s1 = 'Hello'
s2 = 'World'

print('Concatenated String using join() =', "".join([s1, s2]))
Output:
Concatenated String using join() = HelloWorld

print('Concatenated String using join() and whitespaces =', " ".join([s1, s2]))
Output:
Concatenated String using join() and spaces = Hello World
.格式函数- 我们也可以使用string format()函数进行字符串连接和格式化

s1 = 'Hello'
s2 = 'World'

s3 = f'{s1} {s2}'
print('String Concatenation using f-string =', s3)
String Concatenation using f-string = Hello World

name = 'Pankaj'
age = 34
d = Data(10)

print(f'{name} age is {age} and d={d}')
Pankaj age is 34 and d=Data[10]

它们可以做不同的事情,可以一起使用

在您的简单示例中,format(或sprintf或模板版本)更易于阅读且更具python风格

但请考虑一个文档生成器,该文件生成器具有一个标题行和内容行。 你

  • 创建一个空的
    out\u列表=[]
  • 格式化
    标题并将其附加到out\u列表中
  • 循环浏览
    in\u列表
    格式
    中的每个项目,并附加到out\u列表
  • “\n”。加入(外部列表)
    以获取整个文档
(此时,Jinja2也可能有用)

为什么使用模板($name)或sprintf(%(name)s)而不是f-string

  • Python版本
  • 多个可能的模板,即
    Hello$name
    Bonjour$name
  • 模板在别处定义,可能在另一个函数或文件中
  • 对于额外的兔子洞,可以生成模板本身 按代码。让我们假设一个动态显示结果字段的系统 来自任意sql查询

主要是意见,但在这种情况下,我更喜欢第二种意见。当您有一个列表要开始时,Join似乎更合适,但在这里,您创建一个新列表只是为了调用Join。我会查看这篇文章。这可能会对您有所帮助。@MarkMeyer我个人也会使用
格式
,但它的一个缺点是,它只适用于python 3.6及以上版本。F-string速度快得多,但在您不知道要传递给
join
的字符串数量时,它并不合适。