使 python内置的print函数输出时带文件名及行号小技巧

# Time: ${DATE} ${TIME}         
# Author: 自己名字                   
# File: ${NAME}.py             
# Software: ${PRODUCT_NAME}   

from builtins import print as _print
from sys import _getframe

# 自定义print函数
def print(*arg, **kw):
    s = f'{_getframe(1).f_lineno} 行:'        # 注此处需加参数 1。
    return _print(f"《{__name__}》-{s}", *arg, **kw)

print("此处显示行数。")                   

运行结果为:

《__main__》-9 行: 此处显示行数

说明:
sys模块中的_getframe函数会返回一个frame实例,它有下列属性:
‘clear’, ‘f_back’, ‘f_builtins’, ‘f_code’, ‘f_globals’, ‘f_lasti’, ‘f_lineno’, ‘f_locals’, ‘f_trace’, ‘f_trace_lines’, ‘f_trace_opcodes’
其中 ‘f_lineno’ 可以返回_getframe函数执行时所在行的行数。
_getframe函数的参数为整型时会返回_getframe(int)所在int层级的属性。
__main__:如果为本文件的print,则显示《__main__》,其它导入文件的,则显示 《文件名》

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值