Article View: pl.comp.lang.python
Article #28075Re: Interpretowany czy kompilowany?
From: Wojciech Malinowski
Date: Wed, 25 May 2011 20:13
Date: Wed, 25 May 2011 20:13
54 lines
3613 bytes
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-mailReferences:
<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