Johannes Bauer <dfnsonfsdu...@gmx.de> writes: > On 30.03.2018 13:13, Ben Bacarisse wrote: > >>> import collections >>> >>> class Test(object): >>> def __init__(self): >>> z = { >>> "y": collections.defaultdict(list), >> >> This mention of collections refers to ... >> >>> } >>> for (_, collections) in z.items(): >> >> ... this local variable. > > Yup, but why? I mean, at the point of definition of "z", the only > definition of "collections" that would be visible to the code would be > the globally imported module, would it not? How can the code know of the > local declaration that only comes *after*?
Why questions can be hard. The language definition says what's supposed to happen. Is that enough of an answer to why? 4.2.2. Resolution of names A scope defines the visibility of a name within a block. If a local variable is defined in a block, its scope includes that block. [...] <snip> -- Ben. -- https://mail.python.org/mailman/listinfo/python-list