Tail recursion in Python occurs when a function calls itself as the last action it performs. This can be optimized by the interpreter to use less memory and avoid stack overflow errors.