Use iterable and iterator protocols, write generator functions, and build lazy processing pipelines. Evaluate when laziness saves memory and when eager evaluation is clearer.