generic function function composed of multiple functions implementing the same operation for different types which implementation should be used during call is determined by the dispatch algorithm see also the single dispatch glossary entrythe functools singledispatch(decoratorand pep gil see global interpreter lock global interpreter lock the mechanism used by the cpython interpreter to assure that only one thread executes python bytecode at time this simplifies the cpython implementation by making the object model (including critical built-in types such as dictimplicitly safe against concurrent access locking the entire interpreter makes it easier for the interpreter to be multi-threadedat the expense of much of the parallelism afforded by multi-processor machines howeversome extension moduleseither standard or third-partyare designed so as to release the gil when doing computationally-intensive tasks such as compression or hashing alsothe gil is always released when doing / past efforts to create "free-threadedinterpreter (one which locks shared data at much finer granularityhave not been successful because performance suffered in the common single-processor case it is believed that overcoming this performance issue would make the implementation much more complicated and therefore costlier to maintain hash-based pyc bytecode cache file that uses the hash rather than the last-modified time of the corresponding source file to determine its validity see pyc-invalidation hashable an object is hashable if it has hash value which never changes during its lifetime (it needs __hash__(method)and can be compared to other objects (it needs an __eq__(methodhashable objects which compare equal must have the same hash value hashability makes an object usable as dictionary key and set memberbecause these data structures use the hash value internally all of python' immutable built-in objects are hashablemutable containers (such as lists or dictionariesare not objects which are instances of user-defined classes are hashable by default they all compare unequal (except with themselves)and their hash value is derived from their id(idle an integrated development environment for python idle is basic editor and interpreter environment which ships with the standard distribution of python immutable an object with fixed value immutable objects include numbersstrings and tuples such an object cannot be altered new object has to be created if different value has to be stored they play an important role in places where constant hash value is neededfor example as key in dictionary import path list of locations (or path entriesthat are searched by the path based finder for modules to import during importthis list of locations usually comes from sys pathbut for subpackages it may also come from the parent package' __path__ attribute importing the process by which python code in one module is made available to python code in another module importer an object that both finds and loads moduleboth finder and loader object interactive python has an interactive interpreter which means you can enter statements and expressions at the interpreter promptimmediately execute them and see their results just launch python with no arguments (possibly by selecting it from your computer' main menuit is very powerful way to test out new ideas or inspect modules and packages (remember help( )interpreted python is an interpreted languageas opposed to compiled onethough the distinction can be blurry because of the presence of the bytecode compiler this means that source files can be run directly without explicitly creating an executable which is then run interpreted languages typically appendix glossary