Curious case of UnboundLocalError

Ben Bacarisse ben.usenet at bsb.me.uk
Fri Mar 30 10:46:28 EDT 2018


Johannes Bauer <dfnsonfsduifb at 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.


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /