advanced module topics this concludes this part of the book with collection of more advanced module-related topics--data hidingthe __future__ modulethe __name__ variablesys path changeslisting toolsimporting modules by name stringtransitive reloadsand so on--along with the standard set of gotchas and exercises related to what we've covered in this part of the book along the waywe'll build some larger and more useful tools than we have so far that combine functions and modules like functionsmodules are more effective when their interfaces are well definedso this also briefly reviews module design conceptssome of which we have explored in prior despite the word "advancedused in this title for symmetrythis is mostly grab-bag assortment of additional module topics because some of the topics discussed here are widely used--especially the __name__ trick--be sure to browse here before moving on to classes in the next part of the book module design concepts like functionsmodules present design tradeoffsyou have to think about which functions go in which modulesmodule communication mechanismsand so on all of this will become clearer when you start writing bigger python systemsbut here are few general ideas to keep in mindyou're always in module in python there' no way to write code that doesn' live in some module as mentioned briefly in and even code typed at the interactive prompt really goes in built-in module called __main__the only unique things about the interactive prompt are that code runs and is discarded immediatelyand expression results are printed automatically minimize module couplingglobal variables like functionsmodules work best if they're written to be closed boxes as rule of thumbthey should be as independent of global variables used within other modules as possibleexcept for