Article View: pl.comp.lang.python
Article #27065Re: Python i importowanie
From: Michal M
Date: Mon, 21 Dec 2009 08:39
Date: Mon, 21 Dec 2009 08:39
53 lines
3723 bytes
3723 bytes
On 21 Gru, 02:26, Łukasz Rekucki <lreku...@gmail.com> wrote: > Używanie terminów zmienna i przestrzeń nazw wydaje mi się myląca. > Podstawą jest zrozumienie, że "log" w Pythonie nie jest zmienną, a > jedynie nazwą wskazującą na jakiś obiekt. Tak więc sytuacja wygląda > tak: > > 0) zaczynasz wykonywanie module3 > 1) import module1 > 1.1) do słownika modułu module1 dodawana jest nazwa "log" wskazująca > na obiekt None > 2) import module2 > 2.1) wykonywane jest ciało klasy Log > 2.2) do nazwy Log w module2 przypisywana jest nowo utworzona klasa Log > 3) import module4 > 3.1) from module1 import log > 3.1.1) moduł "module1" jest już zaimportowany, więc odczytywane jest > na jaki obiekt wskazuję nazwa "log" w jego słowniku (jest to None) > 3.1.2) w słowniku module4 tworzona jest nowa nazwa i wskazuje ona na > None > 3.2) Tworzona jest klasa Test (analogicznie do klasy Log) > 4) module1.log = module2.Log() # nazwa log w słowniku module1 > wskazuję teraz na nowy obiekt klasy Log. Słownik module4 jest > niezmieniony. > 5) t = module4.Test() > 6) t.use_m() > 6.1) log nie jest lokalne dla use_m, więc jest globalne. Globalnym > kontekstem dla use_m() jest module4. module4.log wskazuję na None -> > błąd. Czyli from module1 import log Tworzy nową zmienną (etykietkę jak wy to nazywacie) w przestrzeni (słowniku) module4 i podstawia pod nią referencję (akurat None, bo się jeszcze nie wykonało podstawienie instancji Log). Natomiast import module1 module1.log Wskazuje na tą samą zmienną którą zmieniam w module1. Innymi słowy, po from module1 import log mam dwie etykietki log i są one niezależne od siebie. Muszę z tym uważać Rozwiązaniem wygodnym byłoby zapisanie w module 4 import module1 log = module1.log ... gdyby nie to, że w każdej funkcji musiałbym dodać global log tak? Wtedy gra nie warta świeczki. No cóż... każdy język ma swoje udziwnienia. :) Dziękuję wszystkim za wyjaśnienia.
Technical Details
Message-ID:
<379a4a35-df69-44f5-ba06-fe48953453b2@u7g2000yqm.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!u7g2000yqm.googlegroups.com!not-for-mailReferences:
<37d6d97e-88b4-4324-9973-a368959f8339@e27g2000yqd.googlegroups.com> <52950de7-b700-40e0-964d-0bb7ab394964@x15g2000vbr.googlegroups.com> <mburv6-lmm.ln1@bozon.softax.pl> <30287087-8528-4210-9ba0-0f4c7784279a@h9g2000yqa.googlegroups.com> <219429b1-25a3-43a5-b074-16a97e723772@p8g2000yqb.googlegroups.com> <9f79d13b-c1a4-443d-9c68-82c088f64763@k17g2000yqh.googlegroups.com> <5e711ddb-6b92-4362-9f7e-dccf3ccc7165@e27g2000yqd.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!newsfeed00.sul.t-online.de!t-online.de!border2.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!u7g2000yqm.googlegroups.com!not-for-mail From: Michal M <mmierzwa@tycowaterworks.pl> Newsgroups: pl.comp.lang.python Subject: Re: Python i importowanie Date: Mon, 21 Dec 2009 00:39:31 -0800 (PST) Organization: http://groups.google.com Lines: 58 Message-ID: <379a4a35-df69-44f5-ba06-fe48953453b2@u7g2000yqm.googlegroups.com> References: <37d6d97e-88b4-4324-9973-a368959f8339@e27g2000yqd.googlegroups.com> <52950de7-b700-40e0-964d-0bb7ab394964@x15g2000vbr.googlegroups.com> <mburv6-lmm.ln1@bozon.softax.pl> <30287087-8528-4210-9ba0-0f4c7784279a@h9g2000yqa.googlegroups.com> <219429b1-25a3-43a5-b074-16a97e723772@p8g2000yqb.googlegroups.com> <9f79d13b-c1a4-443d-9c68-82c088f64763@k17g2000yqh.googlegroups.com> <5e711ddb-6b92-4362-9f7e-dccf3ccc7165@e27g2000yqd.googlegroups.com> NNTP-Posting-Host: 206.18.173.3 Mime-Version: 1.0 X-Trace: posting.google.com 1261384771 11874 127.0.0.1 (21 Dec 2009 08:39:31 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Mon, 21 Dec 2009 08:39:31 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: u7g2000yqm.googlegroups.com; posting-host=206.18.173.3; posting-account=dY1QvgoAAADCWl8YwEq83L_41SxqMaon User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8) chromeframe/4.0,gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit