A generator in Python is a special type of function that returns an iterable sequence of results instead of a single value. It generates data on the fly as you iterate over it, but does not store the entire sequence in memory. This makes them more memory-friendly and efficient for large datasets. Generators are created using functions with the ‘yield’ keyword instead of ‘return’.