#python #memory #stack #heap-memory
#python #память #стек #куча-память
Вопрос:
Итак, я использовал трассировщик для отслеживания этой программы
1 def g(x):
2 y = 10
3 y = 2
4 return y x
5
6 def f():
7 y = 1
8 return g(y)
9
10 print(f())
И программа прекратила трассировку после того, как кадры стека для функций f и g были завершены. Создается ли стек для встроенной функции ‘print’, и если да, то что происходит в этом стеке? Ниже я приложил картинку того, как выглядит этап процесса трассировки (как вы можете видеть из того, насколько он прост, я новичок), где левая сторона — это стек, а правая сторона — куча.
Комментарии:
1. Трассировщик может отслеживать только функции, написанные на Python, а не функции, встроенные в интерпретатор.
2. Он выполняется в коде C, для него нет стека Python.
3. @Barmar спасибо. так вы можете отследить эту встроенную функцию для меня? не могли бы вы уточнить, что вы имели в виду под «стеком python»?
4. Встроенные функции — это черные ящики, если вы не запускаете python в отладчике, таком как gdb.