如何获取调用list.sort()的帧数据?

2024-10-05 15:18:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图访问对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

但是,调用顺序是(outerinnerlist.sortcalm_pear

为什么out_frames[1].function不是类似list.sort的东西


Tags: framesdeffunctionoutsortprintsframelist
1条回答
网友
1楼 · 发布于 2024-10-05 15:18:25

list.sort是用C写的。用C编写的函数不会获得Python堆栈帧。Python堆栈框架仅用于执行用Python编写的代码

无论您希望通过访问list.sort不存在的堆栈帧来执行什么操作,都必须找到其他方法

相关问题 更多 >