we've discussed how many of python' built-ins and idioms that seemat first blushto be non-object-oriented are actually providing access to major objects under the hood in this we'll discuss how the for loop that seems so structured is actually lightweight wrapper around set of object-oriented principles we'll also see variety of extensions to this syntax that automatically create even more types of object we will coverwhat design patterns are the iterator protocol--one of the most powerful design patterns listsetand dictionary comprehensions generators and coroutines design patterns in brief when engineers and architects decide to build bridgeor toweror buildingthey follow certain principles to ensure structural integrity there are various possible designs for bridges (suspension or cantileverfor example)but if the engineer doesn' use one of the standard designsand doesn' have brilliant new designit is likely the bridge he/she designs will collapse design patterns are an attempt to bring this same formal definition for correctly designed structures to software engineering there are many different design patterns to solve different general problems people who create design patterns first identify common problem faced by developers in wide variety of situations they then suggest what might be considered the ideal solution for that problemin terms of object-oriented design