Home

On Mon, 06 Aug 2007 11:13:45 +0000, Alex Popescu wrote:

> Stargaming <stargaming@gmail.com> wrote in news:46b6df49$0$26165
> $9b622d9e@news.freenet.de:
>
[snip]
>>
>> You're just unluckily shadowing the name `y` in the local scope of
> your
>> function. Your code snippet could be rewritten as::
>>
>> def f(x, y=None):
>> if y is None: my_y = []
>> else: my_y = y
>> my_y.append(x)
>> return my_y
>>
>> HTH,
>> Stargaming
>
> For the given example this will continue to print:
>
>> print f(23) # prints [23]
>> print f(42) # prints [42]
>
> so this doesn't solve/explain OP's initial question. A previous post has
> already clarified the reasons for seeing this normal behavior.
>
> bests,
> ./alex

If it keeps normal behaviour, that's exactly what it ought to explain. In
his local scope, there is an `y`, having the value of f.func_defaults.
Because it's harder to see "hey, in some cases, y vanishes, in some it
survives", I invented the new local reference `my_y` -- which should be
clear to go away after completion of the function body.

Regards,
Stargaming

previous
next

Re: Thread-safe file locking
Re: What happens when an exception is not caught?
Re: reading xls file from python
Re: String Constant absent in C++
Re: list index()
Fundacja Iskierka
Pajacyk
Dzieci Niczyje
Nasze Dzieci
Kidprotect