Как я могу получить данные кадра для вызова list.sort()?

-4

Я пытаюсь получить доступ к информации о кадре для конкретного вызова метода 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?

спросил(а) 2018-04-03T21:52:00+03:00 2 года, 3 месяца назад
0
55

list.sort записывается в C. Функции, написанные на C, не получают фреймы стека Python. Фреймы стека Python необходимы только для выполнения кода, написанного на Python.

Независимо от того, что вы надеялись сделать, list.sort к несуществующему стеку кадров list.sort, вам придется найти другой способ сделать это.

ответил(а) 2018-04-03T22:10:00+03:00 2 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема