什么是字符串拼接(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 不仅语法更简洁、可读性更高,还能够自动完成数据类型转换,是日常开发中最常用的字符串格式化方法。