超牛 猴子補丁,修改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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM