# 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__》,其它导入文件的,则显示 《文件名》

本文介绍了如何自定义Python的print函数,并利用sys模块中的_getframe获取当前行号。通过示例展示了_getframe函数的用法,特别是其f_lineno属性,用于显示调用print函数时的行号。内容主要涉及Python基础和内建模块的使用。

1126

被折叠的 条评论
为什么被折叠?



