Здесь мы создаем список, который включает подсписки x, x / 2, x * 2 только для тех значений x из диапазона от -6 до 6 с шагом 2, которые больше 0. Значения, которые удовлетворяют условию x > 0, это 2, 4 и 6, следовательно, результат будет [2, 1.0, 4, 4, 2.0, 8, 6, 3.0, 12].
В данном коде создается список квадратов (x2) только для четных чисел из диапазона от 0 до 4 включительно, то есть 0, 2 и 4. Квадраты этих чисел составят: 0, 4 и 16 соответственно, что в итоге даст 0, 4, 16.
Замыкание в Python — это функция, которая «запоминает» переменные из своей области видимости даже после того, как эта область завершила своё выполнение. Это происходит, если функция вложена в другую функцию и использует переменные внешней функции. Замыкания позволяют создать приватные данные и расширить поведение функций. Здесь innerfunction «запомнила» значение переменной text, хотя внешняя функция outerfunction уже завершила своё выполнение.