Olá, Carlos, como vai?
Sua observação é pertinente. O None é um objeto especial do Python que representa a ausência de valor, e não é uma string nem um número. Quando você usa i == None, o código funciona porque o operador == compara valores, e nesse caso a comparação retorna True. No entanto, a recomendação é utilizar is para comparar com None, pois is verifica identidade, ou seja, se a variável aponta exatamente para o objeto None.
Seu raciocínio está correto e demonstra que você foi além do exercício para entender melhor o comportamento da linguagem. Continue explorando esses detalhes, pois eles fazem diferença na escrita de um código mais consistente. O fórum permanece à disposição para suas próximas contribuições.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!