Python sys.\u getframe(1).f\u lineno如何工作?
我找到了这段测试代码,并用各种代码运行了它,发现它是正确的,但我无法理解它是如何编写的,这行代码在做什么,以及它是如何做的:Python sys.\u getframe(1).f\u lineno如何工作?,python,unit-testing,testing,Python,Unit Testing,Testing,我找到了这段测试代码,并用各种代码运行了它,发现它是正确的,但我无法理解它是如何编写的,这行代码在做什么,以及它是如何做的: linenum = sys._getframe(1).f_lineno 有人能告诉我上面这行代码的工作原理吗?完整的代码块是: import sys def test(did_pass): """ Print the result of a test. """ linenum = sys._getframe(1).f_lineno # Get
linenum = sys._getframe(1).f_lineno
有人能告诉我上面这行代码的工作原理吗?完整的代码块是:
import sys
def test(did_pass):
""" Print the result of a test. """
linenum = sys._getframe(1).f_lineno # Get the caller's line number.
if did_pass:
msg = "Test at line {0} ok.".format(linenum)
else:
msg = ("Test at line {0} FAILED.".format(linenum))
print(msg)
它显示调用堆栈中函数的行号 例如: 上面清单的输出如下所示:
<frame at 0x101172dc0, file 'temp.py', line 12, code f3>
frame = sys._getframe(0)
function = f3()
file/line = temp.py:12
<frame at 0x101184200, file 'temp.py', line 7, code f2>
frame = sys._getframe(1)
function = f2()
file/line = temp.py:7
<frame at 0x1011f29f0, file 'temp.py', line 4, code f1>
frame = sys._getframe(2)
function = f1()
file/line = temp.py:4
frame=sys.\u getframe(0)
函数=f3()
文件/行=temp.py:12
frame=sys.\u getframe(1)
函数=f2()
文件/行=temp.py:7
frame=sys.\u getframe(2)
函数=f1()
文件/行=temp.py:4
只需检查与行号和函数调用的协同连接
<frame at 0x101172dc0, file 'temp.py', line 12, code f3>
frame = sys._getframe(0)
function = f3()
file/line = temp.py:12
<frame at 0x101184200, file 'temp.py', line 7, code f2>
frame = sys._getframe(1)
function = f2()
file/line = temp.py:7
<frame at 0x1011f29f0, file 'temp.py', line 4, code f1>
frame = sys._getframe(2)
function = f1()
file/line = temp.py:4