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 教程。