猴子补丁一般是用于修改三方包或官方包,也可以用来修改自己或者他人的代码。

但也可以用来修改python 语言内置的关键字。

本篇博客修改python最常用的内置print,使你使用print时候,自动打印出当前打印处的文件名和行号,并使用特殊的自创模板,使其在pycharm控制台中能够点击自动跳转到打印处。

# -*- coding: utf-8 -*-
# @Author : ydf
import sys
import time # noinspection PyProtectedMember,PyUnusedLocal
def nb_print(*args, sep=' ', end='\n', file=None):
"""
超流弊的print补丁
:param x:
:return:
"""
# 获取被调用函数在被调用时所处代码行数
line = sys._getframe().f_back.f_lineno
# 获取被调用函数所在模块文件名
file_name = sys._getframe(1).f_code.co_filename
# sys.stdout.write(f'"{__file__}:{sys._getframe().f_lineno}" {x}\n')
args = (str(arg) for arg in args) # REMIND 防止是数字不能被join
sys.stdout.write(f'"{file_name}:{line}" {time.strftime("%H:%M:%S")} \033[0;94m{"".join(args)}\033[0m\n') # 36 93 96 94 # noinspection PyShadowingBuiltins
print = nb_print
if __name__ == '__main__':
nb_print(123, 'abc')
print(456, 'def')

如果在其他文件使用print猴子补丁,保存以上代码到文件monkey_print.py中。

然后用法是from monkey_print import *

这样你写 print(‘bbbbbbbbbb’)   的效果就自动是下图中这样了,自动有了显示前缀。

如何?你可以点击这个文件名链接自动跳转到打印代码发生处。 颜色可以自己用白色或者随便改。

主要作用是如果项目人员中写得很low没有使用日志,而是疯狂大量print,但整个项目运行起来。套了很多层,不知道是哪里print的,使用此猴子补丁,可以一次性改变项目中所有print的行为,利于找到print是在哪里产生的。

如果是新项目,最好用日志而不是print。

最新文章

  1. WPF播放视频
  2. AJAX避免服务器调用上个页面缓存的办法
  3. Guava学习笔记:Guava新增集合类型-Bimap
  4. 大数据BI积累
  5. 学习quartz定时
  6. 【poj1067】 取石子游戏
  7. 提高开发效率的 Eclipse 实用操作
  8. ie F12开发工具出不来
  9. 【KMP】Period
  10. QF——iOS代理模式
  11. hdu4336 Card Collector 状态压缩dp
  12. linux系统时间同步
  13. css中的em用法
  14. MySQL 5.7版本 sql_mode=only_full_group_by 问题
  15. odoo11登录之后返回的session信息分析
  16. AltiumDesigner PCB导入CAD
  17. C++的 new 和 detele
  18. flask之wtform与flask-session组件
  19. 洛谷P4198 楼房重建 单调栈+线段树
  20. Bellman-Ford算法——为什么要循环n-1次?图有n个点,又不能有回路,所以最短路径最多n-1边。又因为每次循环,至少relax一边所以最多n-1次就行了!

热门文章

  1. IntelliJ IDEA 添加类注释模板
  2. Android中的资源访问
  3. Bootstrap学习2--组件-列表组
  4. Redis持久化——RDB(一)
  5. Caffe学习系列(三)Docker安装及一些问题的记录
  6. Effective java -- 8 异常
  7. FHQ_treap
  8. 3D卡片折叠动画自定义下拉框
  9. mysql备份,知识点
  10. 算法(Algorithms)第4版 练习 1.5.13