Nick Coghlan <ncogh...@gmail.com> added the comment:

Most of my thoughts on this topic can be found at 
http://svn.python.org/view/sandbox/trunk/userref/ODF/ (that was written ~2.5, 
so some parts of it are a little dated, but the Essential Concepts section is 
still fairly accurate).

The most relevant part to the current discussion is 1.5:

1.5 Classes and Functions are Defined at Runtime
In static language such as Java or C++, function and class definitions are 
essentially directives to the language compiler regarding the nature of certain 
identifiers. While class and function definition statements still have 
implications for the compilation stage in Python, these definitions are also 
first class statements that are executed at runtime, just like any other 
statement. While the code within the function or class definition statement is 
compiled at compile time, the actual definition of the function or class does 
not occur until the statement is executed at runtime.
In top level code, this distinction usually doesn't matter, but it has some 
significant implications when class and function definitions are placed inside 
a function. Doing so means that a new class or a new function is defined every 
time the containing function is executed. This means that not only is it 
possible to have factory functions that create new class instances (as is 
common in all object-oriented languages), but it is also possible to have 
factory functions that create new classes or new functions. Another key feature 
of nested functions is that they employ lexical scoping, allowing nested 
functions to see identifiers defined in outer scopes.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue12374>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to