GEEK
← 返回首页

什么是字符串拼接(Concatenation)和字符串插值(Interpolation)?

#随笔

字符串拼接(Concatenation)是将多个字符串连接成一个新的字符串,通常使用 + 或 += 操作符完成;字符串插值(Interpolation)则是在字符串中直接嵌入变量或表达式,Python 推荐使用 f-string(格式化字符串) 来实现,它语法简洁、可读性高,并且会自动将非字符串类型转换为字符串。

什么是字符串拼接(Concatenation)和字符串插值(Interpolation)?

在编写 Python 程序时,我们经常需要把多段文字组合在一起。

例如:

Hello

和:

World

组合成:

Hello World

或者:

我的名字是 Alice,今年 18 岁。

其中:

  • "我的名字是"
  • "Alice"
  • "今年"
  • 18
  • "岁"

都是不同的数据,需要组合成一句完整的话。

在 Python 中,完成这项工作的两种主要方式是:

  • 字符串拼接(Concatenation)
  • 字符串插值(Interpolation)

其中,现代 Python 更推荐使用 f-string 来进行字符串插值。


什么是字符串拼接(Concatenation)?

字符串拼接(Concatenation),就是:

把多个字符串连接成一个新的字符串。

最常见的方法就是使用:

+

加号运算符。

例如:

first = "Hello"
second = "World"

result = first + " " + second

print(result)

输出:

Hello World

这里:

" "

表示一个空格。

整个过程可以理解为:

Hello
      +
空格
      +
World
      │
      ▼
Hello World

+ 只能连接字符串

很多初学者都会遇到这样的问题:

name = "John"
age = 26

print(name + age)

程序会报错:

TypeError:
can only concatenate str (not "int") to str

为什么?

因为:

name

是:

字符串(str)

而:

age

是:

整数(int)

Python 不知道:

应该把数字当作数字处理,

还是当作文字处理。

因此会直接报错。


使用 str() 转换数据类型

如果希望把数字和字符串拼接,

需要先把数字转换成字符串。

Python 提供了:

str()

函数。

作用是:

将其他数据类型转换为字符串。

例如:

name = "John"
age = 26

result = name + str(age)

print(result)

输出:

John26

注意:

这里没有空格。

如果希望更美观,

可以自己添加:

result = name + " " + str(age)

输出:

John 26

str() 不会修改原来的变量

很多初学者容易误以为:

str(age)

会把:

age

变成字符串。

实际上并不会。

例如:

age = 26

print(str(age))

虽然输出:

26

但是:

age

仍然是整数。

查看类型:

print(type(age))

输出:

<class 'int'>

说明:

str() 只是返回一个新的字符串,

不会改变原来的变量。


使用 += 拼接字符串

除了:

+

还可以使用:

+=

它叫做:

加法赋值运算符(Addition Assignment Operator)

作用是:

把新的内容追加到原来的字符串后面。

例如:

text = "Hello"

text += " World"

print(text)

输出:

Hello World

相当于:

text = text + " World"

只是写法更加简洁。


什么是字符串插值(Interpolation)?

字符串拼接虽然可以完成任务,

但是代码会越来越长。

例如:

name = "Alice"
age = 18

print("My name is " + name + " and I am " + str(age) + " years old.")

不仅需要很多:

+

还要自己调用:

str()

代码可读性较差。

因此,

Python 推荐使用:

字符串插值(Interpolation)

意思就是:

把变量直接放到字符串里面。


什么是 f-string?

Python 最推荐的字符串插值方式就是:

f-string(Formatted String Literal,格式化字符串字面量)

写法非常简单。

只需要:

在字符串前面加一个:

f

例如:

name = "John Doe"
age = 26

message = f"My name is {name} and I am {age} years old."

print(message)

输出:

My name is John Doe and I am 26 years old.

这里:

{name}

会自动替换成:

John Doe

而:

{age}

会自动替换成:

26

花括号 {} 的作用

在 f-string 中:

{}

叫做:

替换字段(Replacement Field)

花括号里面可以放:

  • 变量
  • 表达式
  • 函数调用(后续课程会学习)

例如:

name = "Tom"

print(f"Hello {name}")

输出:

Hello Tom

花括号中可以写表达式

除了变量,

还可以直接写计算表达式。

例如:

num1 = 5
num2 = 10

print(f"The sum is {num1 + num2}")

输出:

The sum is 15

这里:

num1 + num2

会先计算:

15

然后再放进字符串。

也就是说,

花括号中的内容会先执行,再替换到字符串中


f-string 会自动转换数据类型

这是 f-string 最大的优点之一。

例如:

name = "John"
age = 26

print(f"{name} is {age} years old.")

这里:

age

是整数。

但是:

不需要写:

str(age)

Python 会自动把它转换成字符串。

因此:

使用 f-string 时,

几乎不需要自己调用:

str()

代码更加简洁。


字符串拼接 与 f-string 对比

下面来看一个例子。

使用字符串拼接:

name = "Alice"
age = 20

print("My name is " + name + " and I am " + str(age) + " years old.")

使用 f-string:

name = "Alice"
age = 20

print(f"My name is {name} and I am {age} years old.")

两者输出完全一致:

My name is Alice and I am 20 years old.

但是:

第二种写法:

  • 更短
  • 更容易阅读
  • 不需要调用 str()

因此,也是 Python 官方推荐的写法。


常见错误

❌ 字符串与数字直接拼接

错误:

print("Age: " + 18)

程序会报错。

正确:

print("Age: " + str(18))

或者:

print(f"Age: {18}")

❌ 忘记添加 f

错误:

name = "Tom"

print("{name}")

输出:

{name}

因为这里只是普通字符串。

正确:

print(f"{name}")

输出:

Tom

学习小结

知识点 说明
字符串拼接(Concatenation) 使用 ++= 将多个字符串连接成一个新的字符串。
str() 将其他数据类型转换为字符串,返回新的字符串,不会修改原变量。
字符串插值(Interpolation) 将变量或表达式直接嵌入字符串中。
f-string 在字符串前加 f,使用 {} 插入变量或表达式,是 Python 推荐的字符串格式化方式。
自动类型转换 使用 f-string 时,整数、浮点数等会自动转换为字符串,无需手动调用 str()

总结

  • 字符串拼接(Concatenation)用于将多个字符串连接在一起,可以使用 ++= 操作符完成。
  • 当需要将字符串与数字等其他类型一起拼接时,应先使用 str() 将其转换为字符串,否则程序会报 TypeError
  • 字符串插值(Interpolation)可以直接将变量或表达式嵌入字符串中,其中 f-string 是 Python 最推荐的实现方式。
  • 使用 f-string 不仅语法更简洁、可读性更高,还能够自动完成数据类型转换,是日常开发中最常用的字符串格式化方法。