On 16/10/17 21:12, Stefan Ram wrote:
> r...@zedat.fu-berlin.de (Stefan Ram) writes:
>> »x = None« observably has not the same effect as »del x«:
> 
>   Paradoxically, /deleting/ a local variable which did not
>   ever exist, has the effect of creating a ghost of that
>   local variable which then will hide a global variable:
> 
>   Case 1: The global variable »x« can be used in »f« just
>   fine:
> 
> |>>> x = 9
> |>>> def f():
> |...     print( x )
> |...
> |>>> f()
> |9
> 
>   . Case 2: The »del x« creates a ghost »local variable 'x'«
>   which now will hide the global variable »x«:
> 
> |>>> x = 9
> |>>> def f():
> |...     del x
> |...     print( x )
> |...
> |>>> f()
> |UnboundLocalError: local variable 'x' referenced before assignment
> 
>   .

That's not what happens. The UnboundLocalError is in the del statement,
not the print call:

 >>> x = None
 >>> def f():
 ...     del x
 ...
 >>> f()
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "<stdin>", line 2, in f
 UnboundLocalError: local variable 'x' referenced before assignment
 >>>

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to