LINUX.ORG.RU

Помогите с питоном.

 


0

2
def greeting(name):
    return "Hi, " + name
def exclaim(statement):
    return statement + "!"
def enthusiastic_greeting(name):
    greeting_message = exclaim(greeting(name))
    print(greeting_message)
enthusiastic_greeting("Colin")

Вопрос вот в чем: Including the __main__ frame, how many stack frames exist at the current point of execution? В данном случае point of execution - когда питон просмотрел три функции, но еще не дошел до последней строчки. Правильный ответ - 1, но почему это так, я не могу понять. Ведь создастся три stack frames: для каждой функции соотвественно.



Последнее исправление: sgasgar1234 (всего исправлений: 2)

Ответ на: комментарий от Xenesz

А разве не тогда, когда он их просматривает? Ему же надо как-то знать, что данное обозначение является функцией.

sgasgar1234
() автор топика
Ответ на: комментарий от sgasgar1234

При просмотре байт-код создаётся и лежит себе тихо. Фрейм создаётся при входе в функцию. В нём не имена-адреса функций лежат, а состояние на момент входа.

Xenesz ★★★★
()
Ответ на: комментарий от sgasgar1234

надо как-то знать, что данное обозначение является функцией

Для этого другие структуры, стек не нужен.

Xenesz ★★★★
()
Ответ на: комментарий от sgasgar1234

Я глубоко не копал, вот здесь все кровавые подробности. Коротко — при вызове процедуры/функции, включая __main__, во фрейме сохраняются окружение, адрес возврата и вложенность операторов.

Xenesz ★★★★
()

Ты не проходишь случайно курс по питону на курсэре? Кстати, для понимания погугли Python visualizer

amazpyel ★★★
()

Three function calls in the call stack, three stack frames.

V_M
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.