summary advanced programming techniques ||in this we learned lot more about python' support for procedural and object-oriented programmingand got taste of python' support for functional-style programming in the first section we learned how to create generator expressionsand covered generator functions in more depth we also learned how to dynamically import modules and how to access functionality from such modulesas well as how to dynamically execute code in this section we saw examples of how to create and use recursive functions and nonlocal variables we also learned how to create custom function and method decoratorsand how to write and make use of function annotations in the second section we studied variety of different and more advanced aspects of object-oriented programming first we learned more about attribute accessfor exampleusing the __getattr__(special method then we learned about functors and saw how we could use them to provide functions with state--something that can also be achieved by adding properties to functions or using closuresboth covered in this we learned how to use the with statement with context managers and how to create custom context managers since python' file objects are also context managersfrom now on we will do our file handling using try with except structures that ensure that opened files are closed without the need for finally blocks the second section continued with coverage of more advanced object-oriented featuresstarting with descriptors these can be used in wide variety of ways and are the technology that underlies many of python' standard decorators such as @property and @classmethod we learned how to create custom descriptors and saw three very different examples of their use next we studied class decorators and saw how we could modify class in much the same way that function decorator can modify function in the last three subsections of the second section we learned about python' support for abcs (abstract base classes)multiple inheritanceand metaclasses we learned how to make our own classes fit in with python' standard abcs and how to create our own abcs we also saw how to use multiple inheritance to unify the features of different classes together in single class and from the coverage of metaclasses we learned how to intervene when class (as opposed to an instance of classis created and initialized the penultimate section introduced some of the functions and modules that python provides to support functional-style programming we learned how to use the common functional idioms of mappingfilteringand reducing we also learned how to create partial functions and how to create and use coroutines