🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Python i importowanie

#27065
From: Michal M
Date: Mon, 21 Dec 2009 08:39
53 lines
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-mail
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>

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