как встроенная функция python ‘print’ работает в стеке / куче

#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.