我试图访问对list.sort
方法的特定调用的帧信息,但遇到了问题
import inspect
def calm_pear(x): # compare
cur_frame = inspect.currentframe()
out_frames = inspect.getouterframes(cur_frame)
print(out_frames[0].function) # prints 'calm_pear'
print(out_frames[1].function) # prints 'inner'
print(out_frames[2].function) # prints 'outer'
return id(x)
def outer():
inner()
def inner():
[0, 1].sort(key=calm_pear)
outer() # call outer
我得到的打印结果是:
calm_pear
inner
但是,调用顺序是(outer
,inner
,list.sort
,calm_pear
)
为什么out_frames[1].function
不是类似list.sort
的东西
list.sort
是用C写的。用C编写的函数不会获得Python堆栈帧。Python堆栈框架仅用于执行用Python编写的代码无论您希望通过访问
list.sort
不存在的堆栈帧来执行什么操作,都必须找到其他方法相关问题 更多 >
编程相关推荐