Dynamic programming in Python is a technique of breaking a problem down into smaller sub-problems and solving each sub-problem only once, storing the results for later use.