I'm trying to understand how CPython implements closure variable capture
and there is one minor point I can't understand.

When a local is captured it gets allocated in co_cellvars and is accessed
with (LOAD|STORE)_DEREF, and this is clear.
However when a local is coming from a parameter it gets ALSO allocated in
co_varnames even if the local slot apparently is not accesible because
*_FAST opcodes are not generated.

Is there a technical reason for this? It happens in CPython 2, 3 and even
in PyPy...

Andrea Griffini
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to