🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Interpretowany czy kompilowany?

#28075
From: Wojciech Malinowski
Date: Wed, 25 May 2011 20:13
54 lines
3613 bytes
On 05/25/11 21:25, jacek2v wrote:
> On 25 Maj, 21:20, jacek2v <jace...@gmail.com> wrote:
>> On 25 Maj, 20:20, Roman Dobosz <gryf_esm...@spam-o2.pl> wrote:
[...]
>>> W pewnych warunkach, argumenty domyślne będące mutowalnymi obiektami
>>> mogą zachowywać się w sposób nie taki, jaki wydawać by się mogło że
>>> powinny. W takim przypadku lepiej inicjalizować Nonem i w docstringu
>>> opisać czym dany argument jest.
>>
>> Rzeczywiście można sobie kuku zrobić :) Te zakresy zmienny to raczej
>> do poprawki - i przy okazji "self" mogliby "wykarczować" :)
>> Dzięki.
> 
> Chociaż po chwili namysł to nie problem zakresu zmiennej, tylko jakiś
> błąd inicjacji parametru ?

To nie żaden błąd tylko naturalna konsekwencja tego, że wszystko jest
obiektem. Funkcja też. Jest singletonem, instancją klasy function.
Domyślne parametry są jej atrybutami.

Interpreter nie może w żaden sposób zgadnąć czy te atrybuty są mutowalne
czy nie. Nawet gdyby mógł to pozostała by kwestia, czy przy każdym
odpaleniu zrobić płytkie czy głębokie kopiowanie (i też pojawiłyby się
pewnie skutki uboczne).

Przyjęte rozwiązanie jest najprostsze i najłatwiejsze do zrozumienia.
Trzeba tylko pamiętać, że funkcje, klasy (w tym przypadku można nawet
pomajstrować z typem tego obiektu za pomocą metaklas), docstringi itp są
singletonowymi obiektami. Dowód poniżej:

>>> def foo(bar=[], baz='test'):
...     print bar, baz

>>> type(foo)
<type 'function'>

>>> foo
<function foo at 0x7f377e5e1758>

>>> foo.func_defaults
([], 'test')

>>> foo.func_code
<code object foo at 0x7f377e5dfa80, file "<stdin>", line 1>

>>> foo.__call__
<method-wrapper '__call__' of function object at 0x7f377e5e1758>

>>> foo.__call__()
[] test


Pozdrawiam,
Wojciech Malinowski
Technical Details
Message-ID: <irjnsg$g0e$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <iqmlha$r29$1@news.onet.pl> <87k4dqe6vw.fsf@smsnet.pl> <iqt8gb$lo1$1@solani.org> <e423ccad-b001-4931-8e98-68982533d79f@d15g2000yqn.googlegroups.com> <iqtsq9$j2e$4@solani.org> <4d8313d9-cc85-4065-b94d-c7433e6d51de@p6g2000vbn.googlegroups.com> <iqugpk$vbu$3@solani.org> <64a9b1f5-e71a-4b1e-b54b-029a032d6a17@x1g2000yqb.googlegroups.com> <ir58gg$me$1@speranza.aioe.org> <2f93f4ca-ccb1-42a5-b199-2d9902ee8629@l18g2000yql.googlegroups.com> <ir90vs$nd8$1@speranza.aioe.org> <b807128c-8325-4ef6-93a9-c41ba1609583@h7g2000yqa.googlegroups.com> <irbh66$4fa$1@news.onet.pl> <c4a63f8f-afbc-4dab-ab9e-4c241433ab38@28g2000yqu.googlegroups.com> <irg9ua$pb6$1@news.onet.pl> <3ede9f91-b3da-4845-94e3-697e9301d530@d1g2000yqm.googlegroups.com> <20110525202013.b67a5b5a.gryf_esm-no@spam-o2.pl> <31a73c32-7483-4f0b-b2fa-386103875cf4@x6g2000yqj.googlegroups.com> <c72bf0b2-afa1-4e1b-80aa-7198e59e2e45@b42g2000yqi.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Wojciech Malinowski <virrar@wp.pl>
Newsgroups: pl.comp.lang.python
Subject: Re: Interpretowany czy kompilowany?
Date: Wed, 25 May 2011 22:13:03 +0200
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 54
Message-ID: <irjnsg$g0e$1@inews.gazeta.pl>
References: <iqmlha$r29$1@news.onet.pl> <87k4dqe6vw.fsf@smsnet.pl> <iqt8gb$lo1$1@solani.org> <e423ccad-b001-4931-8e98-68982533d79f@d15g2000yqn.googlegroups.com> <iqtsq9$j2e$4@solani.org> <4d8313d9-cc85-4065-b94d-c7433e6d51de@p6g2000vbn.googlegroups.com> <iqugpk$vbu$3@solani.org> <64a9b1f5-e71a-4b1e-b54b-029a032d6a17@x1g2000yqb.googlegroups.com> <ir58gg$me$1@speranza.aioe.org> <2f93f4ca-ccb1-42a5-b199-2d9902ee8629@l18g2000yql.googlegroups.com> <ir90vs$nd8$1@speranza.aioe.org> <b807128c-8325-4ef6-93a9-c41ba1609583@h7g2000yqa.googlegroups.com> <irbh66$4fa$1@news.onet.pl> <c4a63f8f-afbc-4dab-ab9e-4c241433ab38@28g2000yqu.googlegroups.com> <irg9ua$pb6$1@news.onet.pl> <3ede9f91-b3da-4845-94e3-697e9301d530@d1g2000yqm.googlegroups.com> <20110525202013.b67a5b5a.gryf_esm-no@spam-o2.pl> <31a73c32-7483-4f0b-b2fa-386103875cf4@x6g2000yqj.googlegroups.com> <c72bf0b2-afa1-4e1b-80aa-7198e59e2e45@b42g2000yqi.googlegroups.com>
NNTP-Posting-Host: 87-205-103-32.adsl.inetia.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1306354385 16398 87.205.103.32 (25 May 2011 20:13:05 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Wed, 25 May 2011 20:13:05 +0000 (UTC)
X-User: virrar
In-Reply-To: <c72bf0b2-afa1-4e1b-80aa-7198e59e2e45@b42g2000yqi.googlegroups.com>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.7) Gecko/20100729 Thunderbird/3.1.1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit