分享|Python `print()` 函数完全指南:所有参数详解与实用技巧

日博365备用网站 admin 2025-12-23 12:15:53

print() 是 Python 中最基础也最常用的函数之一,但它远比大多数人想象的更强大。下面我将全面解析 print() 的所有参数,并展示各种实用调试技巧。

一、print() 基本语法

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

二、参数详解

1. *objects:要打印的对象(可变参数)

可以接受任意数量的参数

会自动将每个对象转换为字符串

示例:

print(1, 2.0, "three", [4], {"five": 5})

# 输出: 1 2.0 three [4] {'five': 5}

2. sep:分隔符(默认空格)

控制多个对象之间的分隔符

示例:

print(1, 2, 3, sep=', ') # 输出: 1, 2, 3

print(1, 2, 3, sep=' → ') # 输出: 1 → 2 → 3

print(1, 2, 3, sep='') # 输出: 123

3. end:结束符(默认换行)

控制打印结束后的字符

示例:

print("Hello", end=' ')

print("World") # 输出: Hello World

print("Loading", end='... ')

print("Done") # 输出: Loading... Done

4. file:输出目标(默认sys.stdout)

可以重定向输出到文件或其他流

示例:

with open('output.txt', 'w') as f:

print("保存到文件", file=f)

5. flush:强制刷新(默认False)

控制是否立即刷新输出缓冲区

对实时监控进度条很有用

示例:

import time

print("进度:", end=' ')

for i in range(10):

print(f"{i*10}%", end=' ', flush=True)

time.sleep(0.5)

三、高级调试技巧

1. 变量标签打印(Python 3.8+)

x = 10

y = 20

print(f"{x=}, {y=}") # 输出: x=10, y=20

这是Python 3.8及以上版本新增的f-string调试语法。在f-string中使用 {变量=} 的格式时,会自动输出“变量名=值”的字符串,方便快速调试查看变量名和对应的值,无需手动写 "x=" + str(x) 这类拼接代码。

2. 调试信息格式化

def debug_print(*args):

import inspect

frame = inspect.currentframe().f_back

info = inspect.getframeinfo(frame)

print(f"[{info.filename}:{info.lineno}]", *args)

debug_print("变量值:", x) # 输出: [example.py:10] 变量值: 10

3. 带时间的调试输出

from datetime import datetime

def timestamp_print(*args):

now = datetime.now().strftime("%H:%M:%S.%f")[:-3]

print(f"[{now}]", *args)

timestamp_print("程序启动") # 输出: [14:25:36.452] 程序启动

4. 颜色输出

def color_print(text, color='red'):

colors = {

'red': '\033[91m',

'green': '\033[92m',

'yellow': '\033[93m',

'blue': '\033[94m',

'end': '\033[0m'

}

print(f"{colors[color]}{text}{colors['end']}")

color_print("错误信息", 'red')

color_print("成功信息", 'green')

四、实用打印模式

1. 表格输出

data = [

["Alice", 25, "Engineer"],

["Bob", 30, "Designer"],

["Charlie", 35, "Manager"]

]

print("\n{:<10} {:<5} {:<10}".format("Name", "Age", "Job"))

for row in data:

print("{:<10} {:<5} {:<10}".format(*row))

2. 进度条模拟

import time

print("进度: [", end='')

for i in range(20):

print("#", end='', flush=True)

time.sleep(0.1)

print("] 完成!")

3. 多文件同时输出

with open('log.txt', 'w') as log_file, open('console.txt', 'w') as console_file:

print("调试信息", file=log_file)

print("用户输出", file=console_file)

print("双重输出", file=log_file) # 只写入log文件

print("双重输出") # 同时显示在控制台

五、特殊场景应用

1. 打印到标准错误

import sys

print("错误信息", file=sys.stderr)

2. 临时禁用打印

def no_print(*args, **kwargs):

pass

print = no_print # 禁用所有print

print("这不会显示") # 无输出

3. 带缩进的调试

def indent_print(text, level=0):

print(" " * level + text)

indent_print("开始处理")

indent_print("步骤1", 1)

indent_print("子步骤1.1", 2)

六、最佳实践建议

调试后记得删除:正式代码中不要留下调试print

使用日志模块:对于复杂项目,考虑使用logging模块

格式化输出:使用f-string或format提高可读性

考虑性能:大量打印会影响程序性能

异常处理:文件输出时要处理可能的IOError