在 Python 3 中,使用 print() 函数实现不换行输出非常简单,核心方法是使用 end 参数。

核心方法:使用 end 参数
print() 函数有一个名为 end 的参数,它指定了在打印内容之后要输出的字符,默认情况下,end 的值是 \n(换行符),所以每次打印后光标都会移到下一行。
如果你想让打印后不换行,只需要将 end 参数设置为一个空字符串 即可。
语法
print(object(s), ..., sep=' ', end='', file=sys.stdout, flush=False)
示例 1:打印多个字符不换行
print("Hello", end='')
print(" ", end='')
print("World", end='!')
# 输出结果:
# Hello World!
解释:
- 第一个
print("Hello", end='')打印 "Hello",并且因为end是空字符串,所以光标停在 "Hello" 后面,不换行。 - 第二个
print(" ", end='')打印一个空格,同样不换行。 - 第三个
print("World", end='!')打印 "World",并在其后加上 ,同样不换行。 - 所有输出都在同一行。
示例 2:实现一个动态进度条
这是一个非常经典的用例,可以展示 end 参数的强大之处。

import time
print("正在下载文件:", end='')
for i in range(21):
# 使用 \r 将光标移到行首,实现原地更新
print(f"{'█' * i}{' ' * (20 - i)} {i*5}%", end='\r')
time.sleep(0.2) # 模拟耗时操作
print("\n下载完成!") # 下载完成后,打印一个换行
# 输出效果(会动态变化):
# 正在下载文件: ████████████████████████ 100%
# 下载完成!
解释:
end='\r':这里我们使用了\r(回车符),它会把光标移到当前行的开头,这样下一次的print就会覆盖掉上一次的内容,实现了动态更新的效果。print("\n下载完成!"):当循环结束后,我们使用一个正常的print(默认end='\n')来换行并打印完成信息。
示例 3:打印列表或元组中的元素(不换行)
如果你想打印一个列表中的所有元素,并且它们在同一行,可以这样写:
my_list = ['apple', 'banana', 'cherry']
# 使用循环和 end 参数
for item in my_list:
print(item, end=' ')
print() # 打印一个空行,让输出更整洁
# 输出结果:
# apple banana cherry
Python 2 vs Python 3 的区别
了解这个区别有助于理解为什么 Python 3 要这样做。
-
在 Python 2 中:
print是一个语句,而不是函数,要实现不换行,你需要在末尾加一个逗号 。
(图片来源网络,侵删)# Python 2 代码 print "Hello", print "World!" # 输出: Hello World!
-
在 Python 3 中:
print是一个函数,这使得它的行为更加灵活和一致,通过参数来控制,而不是依赖语法上的特殊符号(如逗号)。# Python 3 代码 print("Hello", end=' ') print("World!") # 输出: Hello World!
| 需求 | Python 3 代码 | 说明 |
|---|---|---|
| 默认(换行) | print("Hello") |
end 默认为 \n |
| 不换行 | print("Hello", end='') |
将 end 设置为空字符串 |
| 不换行,并加空格 | print("Hello", end=' ') |
将 end 设置为空格 |
| 不换行,并加其他字符 | print("Hello", end='!') |
将 end 设置为 |
| 原地更新(动态效果) | print("Progress...", end='\r') |
将 end 设置为 \r(回车符) |
对于绝大多数不换行的需求,你只需要记住 print("内容", end='') 这个模式即可。
