sep 是什么?
sep 是 separator(分隔符)的缩写,它的作用是定义在 print() 函数中,当输出多个对象时,这些对象之间应该用什么字符或字符串进行连接。

print() 函数中的 sep 参数
这是 sep 最常见的使用场景。
默认行为
当你不指定 sep 参数时,print() 函数默认使用一个空格 () 作为分隔符。
print('Hello', 'World', 'Python')
# 输出: Hello World Python
可以看到,'Hello'、'World' 和 'Python' 之间被一个空格隔开。
自定义 sep 参数
你可以通过在 print() 函数中传入 sep='你的分隔符' 来改变这个默认行为。

示例 1:使用逗号和空格作为分隔符
print('Apple', 'Banana', 'Cherry', sep=', ')
# 输出: Apple, Banana, Cherry
这在生成 CSV 格式的文本或列表时非常有用。
示例 2:使用换行符作为分隔符
print('第一行', '第二行', '第三行', sep='\n')
# 输出:
# 第一行
# 第二行
# 第三行
这里 \n 是一个转义字符,代表“换行”。

示例 3:使用其他字符或字符串
你可以使用几乎任何字符串作为分隔符。
# 使用短横线
print('A', 'B', 'C', sep='-')
# 输出: A-B-C
# 使用管道符
print('ID', 'Name', 'Score', sep=' | ')
# 输出: ID | Name | Score
# 使用无空格连接
print('2025', '10', '27', sep='')
# 输出: 20251027
示例 4:将分隔符设置为空字符串
如果你想完全去掉分隔符,可以将 sep 设置为一个空字符串 。
print('Hello', 'World', sep='')
# 输出: HelloWorld
str.join() 方法:一个重要的替代方案
虽然 print(sep=...) 很方便,但在实际编程中,如果你需要将多个字符串拼接成一个最终的字符串(而不是直接打印到控制台),更常用、更高效的方法是 str.join() 方法。
str.join() 的语法是:'分隔符'.join(字符串列表)
示例:
words = ['Hello', 'World', 'Python']
# 使用 print(sep=...)
print(*words, sep=' ') # *words 是解包操作,相当于 print('Hello', 'World', 'Python', sep=' ')
# 输出: Hello World Python
# 使用 str.join()
result = ' '.join(words)
print(result)
# 输出: Hello World Python
为什么 str.join() 通常更好?
- 性能:
str.join()在底层是为字符串拼接优化的,比在循环中反复使用 号要快得多。 - 灵活性:它返回一个字符串,你可以将其存储在变量中、写入文件、作为参数传递给其他函数,而不仅仅是打印。
- 明确性:代码意图非常清晰——你正在构建一个由特定分隔符连接的字符串。
其他函数中的 sep 参数
sep 的概念不仅仅局限于 print(),一些其他函数也使用类似的参数来处理输入或输出中的分隔问题。
示例:csv.writer
在处理 CSV(逗号分隔值)文件时,csv.writer 对象有一个 delimiter 参数,它的作用和 sep 非常相似,用于指定字段之间的分隔符。
import csv
# 假设我们想用分号作为分隔符来写入一个 CSV 文件
data = [['Name', 'Age'], ['Alice', '30'], ['Bob', '25']]
with open('output.csv', 'w', newline='') as f:
writer = csv.writer(f, delimiter=';') # 这里用 delimiter 而不是 sep
writer.writerows(data)
# output.csv 文件内容会是:
# Name;Age
# Alice;30
# Bob;25
虽然参数名是 delimiter,但其核心思想与 print() 的 sep 完全一致。
总结与对比
| 特性 | print(*items, sep=' ') |
'sep'.join(iterable) |
|---|---|---|
| 主要用途 | 直接输出到控制台 | 构建一个字符串 |
| 返回值 | None(无返回值) |
一个新的字符串 |
| 灵活性 | 低,只能打印 | 高,字符串可被任意使用 |
| 性能 | 对于快速打印很方便 | 对于大量字符串拼接更高效 |
| 适用场景 | 调试、简单的命令行输出 | 格式化文本、生成文件、数据预处理 |
- 如果你只是想把几个东西打印出来,并且想在它们之间加点东西,用
print(sep=...)。 - 如果你需要把几个字符串合并成一个,以便后续处理,用
'sep'.join(...)。
