While reading Python’s Execution model documentation, I realized that Python’s free variables do not seem to have a strict late binding property where a name binding occurring in any code block can be used for name resolution. Indeed, executing: raises: They have rather a loose late binding property where only a name binding occurring in an outer code block of