Вычитал неплохой тест на то, как отделить человека, освоившегося с Python, от человека, который «ну там, синтаксис знаю». Код на картинке, поскольку нынешние сети, в отличие от старого доброго ЖЖ, не умеют в преформат. Задача испытуемого – ответить, что выдаст код. Человек, который просто знает синтаксис, возможно, представит себе примерно следующее. Второй параметр функции имеет значение по умолчанию, а именно пустой список. Значит, видимо, когда он пропущен, в функцию вторым параметром передаётся пустой список. Значит, в первый раз должно вывести "[0, 1]", а во второй "[0, 1, 2]". Не, деца, сбъркахте. Фишка в том, что Python язык не просто интерпретируемый, это язык «предельно интерпретируемый». То есть там в принципе нет «чистаа определений», все операторы исполняются. Даже такие, как, например, import. Да-да. Автор модуля может в него встроить код на верхнем уровне, и этот код выполнится немедленно в момент выполнения оператора import. Оператор "def" – это не как в компилируемых яз