ZetCode

Python print 函数

上次修改时间:2025 年 4 月 11 日

本综合指南探讨 Python 的 print 函数,该函数将文本输出到标准输出流。我们将介绍基本用法、格式化选项以及 Python 中控制台输出的实际示例。

基本定义

print 函数将对象显示到文本流,通常是控制台。 它将对象转换为字符串,用空格分隔它们,并默认以换行符结尾。

主要特点:接受多个对象,处理字符串转换,支持自定义分隔符和行尾符,并且可以重定向到文件。 它是 Python 的主要输出机制。

基本用法

这是一个简单的用法示例,展示了 print 如何处理不同类型的对象和多个参数。 这演示了它的默认行为。

basic_print.py
# 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 用空格分隔参数并以换行符结尾。 这些行为可以自定义,如后面的示例所示。

自定义分隔符和结尾

sepend 参数控制 print 如何连接参数和终止输出。 此示例演示了自定义。

separators.py
# 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 参数直接写入文件。 此示例显示文件输出和标准错误重定向。

file_output.py
# 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。

formatting.py
# 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、打印可迭代对象和处理非字符串类型。

advanced.py
# 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 通过调用字节和其他类型的字符串表示方法来处理它们。

最佳实践

资料来源

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 到目前为止,我已经撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有 Python 教程