分享|Python `print()` 函数完全指南:所有参数详解与实用技巧
匿名用户
591
2025.07.21
2025.07.21
发布于 广东

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)

六、最佳实践建议

  1. 调试后记得删除:正式代码中不要留下调试print
  2. 使用日志模块:对于复杂项目,考虑使用logging模块
  3. 格式化输出:使用f-string或format提高可读性
  4. 考虑性能:大量打印会影响程序性能
  5. 异常处理:文件输出时要处理可能的IOError
评论 (0)