高级功能-builtins-覆盖python的内置函数

问题: 有没有什么办法可以直接覆盖内置函数,不改变原有代码 比如 原来的代码中使用了print 我用某种方法在不改变原有代码的情况下,直接改变print的功能。

import builtins

# 保存原始的print函数
original_print = builtins.print

# 定义一个新的print函数
def custom_print(*args, **kwargs):
    # 在这里添加你的自定义逻辑
    print("自定义print开始")
    original_print(*args, **kwargs)
    print("自定义print结束")

# 覆盖内置的print函数
builtins.print = custom_print

# 测试
print("Hello, world!")

但是这个代码有一个问题。就是会报错。RecursionError: maximum recursion depth exceeded原因是,新函数中有print,造成了无限递归。 方法就是不要在custom_print中使用print。如果要输出到屏幕可以用其他方法替代。比如

sys.stdout.write(*args, **kwargs)  
sys.stdout.flush()  # 确保立即输出
%%  import logging  
logging.basicConfig(level=logging.INFO)  
logging.info(*args, **kwargs)

最佳的解决方案,临时把print保存起来,相当于改一个名字。

import builtins

# 将原始的 print 函数存储到临时变量中
original_print = builtins.print

def new_print(*args, **kwargs):
    # 在这里添加自定义的行为,比如记录日志、格式化输出等
    original_print(*args, **kwargs)

# 用新的 print 函数替换内置的 print 函数
builtins.print = new_print

# 现在所有对 print 的调用都会执行新的 print 函数
print('Hello, world!')
使用 Hugo 构建
主题 StackJimmy 设计