Article View: pl.comp.lang.python
Article #28337Re: Prośba o wytknięcie błędów
From: Stachu 'Dozzie' K.
Date: Fri, 18 Nov 2011 12:47
Date: Fri, 18 Nov 2011 12:47
25 lines
2315 bytes
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-mailReferences:
<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