Python print 函数
上次修改时间:2025 年 4 月 11 日
本综合指南探讨 Python 的 print 函数,该函数将文本输出到标准输出流。我们将介绍基本用法、格式化选项以及 Python 中控制台输出的实际示例。
基本定义
print 函数将对象显示到文本流,通常是控制台。 它将对象转换为字符串,用空格分隔它们,并默认以换行符结尾。
主要特点:接受多个对象,处理字符串转换,支持自定义分隔符和行尾符,并且可以重定向到文件。 它是 Python 的主要输出机制。
基本用法
这是一个简单的用法示例,展示了 print 如何处理不同类型的对象和多个参数。 这演示了它的默认行为。
# Simple string
print("Hello, World!")
# Multiple arguments
print("The answer is", 42)
# Different types
print("Pi is approximately", 3.14159)
# Mathematical expression
print("2 + 2 =", 2 + 2)
# List output
print([1, 2, 3, 4, 5])
此示例显示了 print 的多功能性。 它自动将数字转换为字符串,处理多个参数,并评估表达式。
默认情况下,print 用空格分隔参数并以换行符结尾。 这些行为可以自定义,如后面的示例所示。
自定义分隔符和结尾
sep 和 end 参数控制 print 如何连接参数和终止输出。 此示例演示了自定义。
# Custom separator
print("2025", "04", "11", sep="-") # 2025-04-11
# No separator
print("Python", "is", "awesome", sep="") # Pythonisawesome
# Custom end character
print("Loading", end="... ")
print("Done!") # Loading... Done!
# Multi-line output
print("First line", end="\n\n")
print("Third line")
# Tab-separated values
print("Name", "Age", "City", sep="\t")
print("Alice", 30, "Paris", sep="\t")
sep 参数替换参数之间的默认空格。 end 参数替换末尾的默认换行符。
这些功能对于精确格式化输出、创建 CSV/TSV 数据或构建没有换行符的进度指示器非常有用。
文件输出
print 函数可以使用 file 参数直接写入文件。 此示例显示文件输出和标准错误重定向。
# Writing to a file
with open("output.txt", "w") as f:
print("This goes to a file", file=f)
# Appending to a file
with open("log.txt", "a") as f:
print("New log entry", file=f)
# Writing to stderr
import sys
print("Error message", file=sys.stderr)
# Multiple file writes
with open("data.csv", "w") as f:
print("Name,Age,Score", file=f)
print("Alice,25,95", file=f)
print("Bob,30,88", file=f)
file 参数接受任何具有 write 方法的类文件对象。 这包括标准流,如 sys.stderr。
默认情况下,文件输出会被缓冲。 对于立即写入,可以刷新文件或使用 flush=True 参数(Python 3.3+)。
格式化输出
print 函数可以与各种字符串格式化技术一起使用。 此示例显示 f-strings、format() 和 %-formatting。
# f-strings (Python 3.6+)
name = "Alice"
age = 30
print(f"{name} is {age} years old")
# format() method
print("{} + {} = {}".format(5, 3, 5+3))
# %-formatting
print("Pi: %.2f" % 3.14159)
# Column alignment
print("{:<10} {:>10}".format("Item", "Price"))
print("{:<10} {:>10.2f}".format("Apple", 0.99))
print("{:<10} {:>10.2f}".format("Banana", 1.25))
# Multi-line formatted output
print(f"""\
Name: {name}
Age: {age}
Score: {95}
""")
字符串格式化允许精确控制输出外观。 f-strings (Python 3.6+) 为嵌入表达式提供了最易读的语法。
该示例演示了数字格式化、列对齐和多行输出。 这些技术对于创建专业的控制台输出至关重要。
高级功能
此示例探讨了不太常见的 print 功能,例如 flush、打印可迭代对象和处理非字符串类型。
# Flushing output immediately
print("Loading...", end="", flush=True)
import time
time.sleep(2)
print("Done!")
# Printing iterables with *
numbers = [1, 2, 3, 4, 5]
print(*numbers, sep=", ") # 1, 2, 3, 4, 5
# Printing dictionaries
person = {"name": "Alice", "age": 30}
print("Person:", person)
# Custom object with __str__
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return f"Point({self.x}, {self.y})"
print(Point(3, 4)) # Point(3, 4)
# Printing bytes
print(b"Hello") # b'Hello'
flush 参数强制立即输出,这对于进度指示器很有用。 * 运算符解包可迭代对象以进行打印。
自定义对象应实现 __str__ 以进行有意义的打印输出。 print 通过调用字节和其他类型的字符串表示方法来处理它们。
最佳实践
- 使用 f-strings: 用于清晰、可读的字符串格式化 (Python 3.6+)
- 考虑 end 参数: 用于没有换行符的进度指示器
- 实现 __str__: 用于自定义对象以有意义地打印
- 使用 file 参数: 用于直接写入文件或 stderr
- 一致地格式化: 保持统一的输出格式
资料来源
作者
列出所有 Python 教程。