The Python execution model

In order to have a really solid foundation in Python, it's important to understand the Python  execution model. By this, we mean the rules defining precisely when function definitions and other important events occur during module import and execution. To help you develop this understanding, we'll focus on the def keyword since you're already familiar with it. Once you have an understanding of how def is processed by Python, you'll know most of what you need to know about Python's execution model.

What's important to understand is this: def isn't merely a declaration, it's a statement. What this means is that def is actually executed at runtime along with the rest of the top-level module-scope code. What def does is to bind the code in the function's body to the name following def. When modules are imported or run, all of the top-level statements are run, and this is the means by which the functions within the module namespace are defined.

To reiterate, def is executed at runtime. This is very different from how function definitions are handled in many other languages, especially compiled languages like C++, Java, and C#. In those languages, function definitions are processed by the compiler at compile time, not at runtime. By the time the program is actually executing, those function definitions are fixed. In Python there is no compiler, and functions don't exist in any form — except that of source code — until execution. In fact, since a function is only defined when its def is processed on import, a function in a module which is never imported will never be defined.

Understanding this dynamic nature of Python function definitions is critical to understanding important concepts later in this book, so make sure you're comfortable with it. If you've access to a Python debugger, For Example, in an IDE, you might spend some time stepping through your words.py module as it's imported.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset