超牛 猴子补丁,修改python内置的print
猴子补丁一般是用于修改三方包或官方包,也可以用来修改自己或者他人的代码。
但也可以用来修改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。
超牛 猴子补丁,修改python内置的print的更多相关文章
- python内置函数print输出到文件,实现日志记录的功能
# bulid time 2018-6-22 import os import time def log(*args, **kwargs): # *kargs 为了通用 可不传 rule = &quo ...
- 16.python内置函数
Python 内置函数:https://www.runoob.com/python/python-built-in-functions.html 原文:https://www.cnblogs.com/ ...
- 提升效率必备!8个超好用的Python内置函数
文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 吃着不想停 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...
- 8个超好用的Python内置函数,提升效率必备(小白必看)
python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率. 这次来梳理下8个好用的python内置函数. 1.set() 当需要对一个列表进行去重操作的 ...
- python内置函数
python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...
- Python内置函数解析
我们知道,为了方便使用,python内置了一系列常用及关键的函数,如type().下面将对这些函数进行逐一分析.解释. Python内置函数表: 1. abs():返回绝对值.如abs(-1)= 1. ...
- Python内置函数(62)——exec
英文文档: exec(object[, globals[, locals]]) This function supports dynamic execution of Python code. obj ...
- 【转】Python 内置函数 locals() 和globals()
Python 内置函数 locals() 和globals() 转自: https://blog.csdn.net/sxingming/article/details/52061630 1>这两 ...
- Python内置的urllib模块不支持https协议的解决办法
Django站点使用django_cas接入SSO(单点登录系统),配置完成后登录,抛出“urlopen error unknown url type: https”异常.寻根朔源发现是python内 ...
随机推荐
- 代替print输出的PY调试库:PySnooper
PySnooper¶ Github:https://github.com/lotapp/PySnooper pip install pysnooper 使用:分析整个代码 @pysnooper.s ...
- spring 3.2 后 annotation-driven 注册新的类
DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 的使用已经过时! DefaultAnnotationHandlerMa ...
- flex 特性
flex grow 分配的比例是对整体,比如 A grow 3 B grow 4,A连同margin一块是3
- 牛客小白月赛1 B 简单题2 【数学】
题目链接 https://www.nowcoder.com/acm/contest/85/B 思路 这个 也是 E AC代码 #include <cstdio> #include < ...
- Javamail 发送附件中文名过长以及乱码问题
最近在弄javamail发送邮件当邮件里含有附件并且附件是中文的时候发送后就会出现乱码!! 通过javax.mail.internet.MimeUtility.encodeText()就可解决这个 ...
- 每天一个Linux命令(34)grep命令
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...
- zookeeper 实战案例分享:cruator客户端编程
上两篇介绍了zookeeper服务器端的安装和配置,今天分享下利用zookeeper客户端编程来实现配置文件的统一管理,包括文件添加.删除.更新的同步. 比如,连接数据库信息的配置文件,一般每个应用服 ...
- etcd -> Highly-avaliable key value store for shared configuration and service discovery
The name "etcd" originated from two ideas, the unix "/etc" folder and "d&qu ...
- ListOperations
RedisOperations<K,V> getOperations() V index(K key, long index) V leftPop(K key) V leftPop( ...
- 代码题(2)— 统计所有小于非负整数 n 的质数的数量
质数也叫素数,只能被1和它本身整除的. 利用筛选法. class Solution { public: int countPrimes(int n) { ) ; ; vector<); ;i&l ...