🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #28337

Re: Prośba o wytknięcie błędów

#28337
From: Stachu 'Dozzie' K.
Date: Fri, 18 Nov 2011 12:47
25 lines
2315 bytes
On 2011-11-18, hubert depesz lubaczewski <depesz@depesz.com> wrote:
>> def fun(spam, eggs=[]):
>>     eggs.append(spam)
>>     print eggs
>>
>> fun(1)
>> fun('abc')
>
> ale z eggs=list() działa tak samo. w dodatku - czemu tak?
> gdy patrzyłem na ten kod, bez uruchamiania, to uznałem, że eggs jest
> przy każdym wywołaniu puste. czemu jego wartość została zachowana między
> wywołaniami funkcji?

Jesteś przyzwyczajony z innych języków, że definicja funkcji to jest
sprawa czasu kompilacji. W Pythonie to nieprawda: funkcja jest
tworzona dopiero podczas pracy programu. W związku z tym powyższa
funkcja najpierw tworzy obiekt typu lista (który jest pusty), a potem
przywiązuje go jako argument domyślny do właśnie utworzonej funkcji.
Kolejne uruchomienia funkcji dostają ten sam obiekt (listę) jako wartość
domyślną, więc jeśli zmienisz obiekt, zmiana zostanie zachowana do
następnego uruchomienia.

-- 
Secunia non olet.
Stanislaw Klekot
Technical Details
Message-ID: <slrnjcckna.7mn.dozzie@jarowit.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder4.news.weretis.net!feeder1.news.weretis.net!news.solani.org!.POSTED!not-for-mail
References: <2h09p8-kgk.ln1@depesz.com> <slrnjc4841.8or.milusi.pysiaczek@buziaczek.pl> <1j8ap8-uiv.ln1@depesz.com> <slrnjcc2q2.ckt.milusi.pysiaczek@buziaczek.pl> <2rvhp8-0ch.ln1@depesz.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder4.news.weretis.net!feeder1.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: "Stachu 'Dozzie' K." <dozzie@go.eat.some.screws.spammer.invalid>
Newsgroups: pl.comp.lang.python
Subject: Re: Prośba o
 wytknięcie błędów
Date: Fri, 18 Nov 2011 12:47:40 +0000 (UTC)
Organization: solani.org
Lines: 25
Message-ID: <slrnjcckna.7mn.dozzie@jarowit.net>
References: <2h09p8-kgk.ln1@depesz.com> <slrnjc4841.8or.milusi.pysiaczek@buziaczek.pl> <1j8ap8-uiv.ln1@depesz.com> <slrnjcc2q2.ckt.milusi.pysiaczek@buziaczek.pl> <2rvhp8-0ch.ln1@depesz.com>
Mime-Version: 1.0
X-Trace: solani.org 1321620460 29882 eJwFwYEBwCAIA7CXRFrAc8ak/59gQg+LPxEMUFQsB1DgolCn+mPr5pqBrM2VvrWbddrGrz8FARCn (18 Nov 2011 12:47:40 GMT)
X-Complaints-To: abuse@news.solani.org
NNTP-Posting-Date: Fri, 18 Nov 2011 12:47:40 +0000 (UTC)
User-Agent: slrn/pre0.9.9-111 (Linux)
X-User-ID: eJwFwQERADEIAzBLz0PLIYfB6l/CEjiNk0EwIEhG3NquOmPCToONcPfPJvvq/j2VmxlS73kuxhIo
Cancel-Lock: sha1:wLuDU5u3JY6F+6gvvRGcjw8MEXg=
X-NNTP-Posting-Host: eJwFwYEBwCAIA7CXhqVlnjPq+P8EE0IhV4pKDgfzOCaN1W1Q6jpucX/vqqg/EWcTTUzJqy4fZxDU
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit