A generator is an iterator that can be used only once. This means that once a generator has been iterated over, it cannot be iterated over again. This is because generators do not store all the values in memory, they generate the values on the fly. This is also called Lazy Evaluation.