Python技术迷

一个 print 函数,挺会玩啊?

我有时候真觉得 Python 这个 print(),表面上看就一个“输出一下”的小工具,结果越用越发现它背地里藏了不少小心思。就像公司里那个每天看起来很安静的小同事,关键时候整点狠活儿出来。

下面我就跟你随便聊聊这个“小家伙”到底能玩些什么花样。

print 不只是“显示文本”

你第一次接触 Python,大概率是这样:

print("Hello world")

然后你以为它的使命就结束了?

其实 print() 默认做了三件事:

  1. 把东西转成字符串
  2. 输出到 标准输出(stdout)
  3. 自动在最后加一个换行

也就是说,你啥都不配置,它就在背地里帮你“润色”好。

print("A")
print("B")

默认输出:

A
B

但如果你不想换行呢?

print("A", end="")
print("B")

输出:

AB

看吧,一个 end 参数就能让它变形。

它还懂“分隔符”这种社交礼仪

给你个需求:你要输出一串内容,但不想用默认空格隔开。

没关系,print() 直接把人家安排明白:

print("2025", "01", "12", sep="-")

输出:

2025-01-12

它这分隔符功能用一次你就回不去,尤其是生成文件名、日志前缀的时候特别香。

print 可以输出到任何地方

你以为它只能“打印到屏幕”?No no no,这孩子其实“多才多艺”。

比如把内容写进文件:

with open("log.txt", "w") as f:
    print("系统启动成功", file=f)

只需要改一个 file= 参数,输出位置就从屏幕变到文件里。

甚至你给它传 socket、StringIO、日志流,它都能乖乖把内容送进去。

它还能当“临时调试器”

这可能是全世界程序员都最爱用的技巧:**在关键地方塞一个 print()**。

比如:

defprocess(item):
    print("[Debug] item =", item)
# 后面一堆复杂逻辑...

虽然 IDE 里有断点,但你知道的 —— print 不会卡住程序,不会丢线程上下文,也不会让你跳来跳去。

而且 print 天然线程安全,还能带着时间戳自己封一个:

from datetime import datetime

deflog(msg):
    print(f"{datetime.now()} - {msg}")

不需要 logging 模块也能搞个迷你日志系统。

动态刷新输出?print 也能玩

比如你想实现“加载中......”那种动态效果:

import time

for i in range(5):
    print(f"\r加载中 {'.' * (i+1)}", end="")
    time.sleep(0.5)

运行时界面是闪动的,完全不换行。

你说这不是带点“UI 控件味儿”了吗?

print 还能捕获变量结构,非常适合 debug

Python3.8 给 print 搞了个隐藏技能——f-string debug 格式。

x = 42
print(f"{x=}")

输出:

x=42

甚至还能打印表达式:

print(f"{3 * x=}")

输出:

3 * x=126

这功能简直像是 Python 官方看不下大家到处写 debug print,自带优化了解。

再偷偷告诉你一个骚操作:重写 print

你以为它只是内置函数?其实你能换掉它。

比如你想加上统一前缀:

import builtins

_old_print = print

defprint(*args, **kwargs):
    _old_print("[MyApp]", *args, **kwargs)

以后所有 print 都长这样:

[MyApp] 处理完成

是不是立刻有点“框架感”了?

最后,print 还能被“禁用”

有时候你跑脚本不想它乱输出,你可以直接:

import sys
sys.stdout = open("/dev/null", "w")

或者 Windows:

sys.stdout = open("NUL", "w")

print 再多也没声音了,就像把吵闹孩子的麦给关掉。

你看,明明只是一个 print(),结果功能一点不简单。 输出、格式化、到处写入、调试、动态刷新、甚至还能被重写……

可以说它是 Python 中最容易被低估的小角色。

你以后再写 print("hello"),大概也会想起它这堆隐藏技能了。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB