<div dir="ltr">I'm trying to understand how CPython implements closure variable capture and there is one minor point I can't understand.<div><br></div><div style>When a local is captured it gets allocated in co_cellvars and is accessed with (LOAD|STORE)_DEREF, and this is clear.</div>
<div style>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.</div><div style><br></div><div style>
Is there a technical reason for this? It happens in CPython 2, 3 and even in PyPy...</div><div style><br></div><div style>Andrea Griffini</div></div>