В скомпилированных языках вы обычно получаете сообщение об ошибке, если попытаетесь определить две функции с тем же именем. Но в Python функции являются первоклассными объектами, и они определяются динамически.
Когда вы определяете новую функцию с тем же именем, что и ранее определенная функция, имя функции теперь привязано к новому объекту функции, а старый объект функции возвращен сборщиком мусора.
Итак, что происходит с вашими функциями, ничем не отличается от того, что происходит с простыми целыми примерами, размещенными в других ответах на этой странице.
Аналогично, мы можем сделать то же самое с функциями, определенными с использованием механизма lambda
. Например:
>>> myfun=lambda:1; myfun=lambda:0; print(myfun())
0
Вторая функция перезаписывает первую. –
Декларация. –
@AvinashRaj вы можете объяснить? –