Лямбда внутри лямбды. Страшный костыль, потому что иначе все созданные функции будут выводить число 9. Чтобы такого не происходило, надо писать одну лямбду с дефолтным аргументом lambda i=i: .... Это работает, так как дефолтные аргументы функции создаются в момент определения функции. Без этого пайтон будет искать, что подставить на место i во время вызова функции. Сначала будет смотреть в локальном пространстве имен. А там есть такая переменная со значением 9.