further procedural programming further object-oriented programming functional-style programming advanced programming techniques |||in this we will look at wide variety of different programming techniques and introduce many additionaloften more advancedpython syntaxes some of the material in this is quite challengingbut keep in mind that the most advanced techniques are rarely needed and you can always skim the first time to get an idea of what can be done and read more carefully when the need arises the first section digs more deeply into python' procedural features it starts by showing how to use what we already covered in novel wayand then returns to the theme of generators that we only touched on in the section then introduces dynamic programming--loading modules by name at runtime and executing arbitrary code at runtime the section returns to the theme of local (nestedfunctionsbut in addition covers the use of the nonlocal keyword and recursive functions earlier we saw how to use python' predefined decorators--in this section we learn how to create our own decorators the section concludes with coverage of function annotations the second section covers all new material relating to object-oriented programming it begins by introducing __slots__a mechanism for minimizing the memory used by each object it then shows how to access attributes without using properties the section also introduces functors (objects that can be called like functions)and context managers--these are used in conjunction with the with keywordand in many cases ( file handlingthey can be used to replace try except finally constructs with simpler try except constructs the section also shows how to create custom context managersand introduces additional advanced object-oriented featuresincluding class decoratorsabstract base classesmultiple inheritanceand metaclasses the third section introduces some fundamental concepts of functional programmingand introduces some useful functions from the functoolsitertools