Article View: pl.comp.lang.python
Article #27820Re: [jak zdefiniować zmienną globalną]
From: Jan Kaliszewski
Date: Thu, 25 Nov 2010 04:27
Date: Thu, 25 Nov 2010 04:27
47 lines
2762 bytes
2762 bytes
1. Jest późno (lub jak kto woli wcześnie), a ja za chwilę po x godzin
pracy idę spać, więc mogłem coś przeoczyć -- ale nie widzę żadnego
powiązania między tymi skryptami (modułami?).
2. Jeżeli są to moduły jednego programu (i np. jeden importuje drugi lub
oba są importowane przez jakiś trzeci), to nadal nic magicznie nam się
tutaj nie przeniesie. Tzw. "zmienne globalne" są w Pythonie *globalne
tylko w obrębie danego modułu* (bardziej adekwatnie można by je nazwać
zmiennymi składowymi modułu). Więc jeżeli chcesz się dostać z modułu A do
zmiennej globalnej modułu B, musisz moduł B lub konkretny obiekt siedzący
w zmiennej składowej tego modułu umieścić w zmiennej modułu A --
najczęściej uzyskuje się to za pomocą importu:
===== moduł aaa ======
komunikat = 'tralala'
===== moduł bbb ======
# moduł aaa umieszczamy w zmiennej składowej modułu bbb
import aaa
print(aaa.komunikat)
lub
===== moduł aaa ======
komunikat = 'tralala'
===== moduł bbb ======
# napis 'tralala' umieszczamy w zmiennej składowej modułu bbb
from aaa import komunikat
print(komunikat)
Warto zauważyć, że:
* w Pythonie wszystko jest obiektem, moduły również.
* każdy obiekt można umieścić w zmiennej, a raczej -- mówiąć bardziej
precyzyjnie -- przypiąć mu "etykietkę" (nazwę) w danej przestrzeni nazw;
jeden obiekt może mieć wiele takich "etykietek" (w wielu przestrzeniach
nazw, np. w różnych modułach, klasach, wewnąrz funkcji jako zmienna
lokalna itp.);
* słowo kluczowe global jest potrzebne tylko, jeżeli chcemy w nieglobalnej
przestrzeni nazw (np. wewnątrz definicji funkcji lub klasy) ustawić
wartość zmiennej globalnej.
Pozdr.
*j
Technical Details
Message-ID:
<op.vmplcqzwfvx12t@jerzozwiesz.localdomain>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!nntp.aster.pl!newsread1.aster.pl!not-for-mailReferences:
<4ced9255$0$22814$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!news.nask.pl!news.nask.org.pl!nntp.aster.pl!newsread1.aster.pl!not-for-mail From: "Jan Kaliszewski" <zuo@chopin.edu.pl> Newsgroups: pl.comp.lang.python Subject: Re: [jak zdefiniować zmienną globalną] Date: Thu, 25 Nov 2010 05:27:52 +0100 Organization: Aster Sp. z o.o. Lines: 47 Message-ID: <op.vmplcqzwfvx12t@jerzozwiesz.localdomain> References: <4ced9255$0$22814$65785112@news.neostrada.pl> NNTP-Posting-Host: 62.121.72.3 Mime-Version: 1.0 X-Trace: newsread1.aster.pl 1290659272 56445 62.121.72.3 (25 Nov 2010 04:27:52 GMT) X-Complaints-To: abuse@aster.pl NNTP-Posting-Date: Thu, 25 Nov 2010 04:27:52 +0000 (UTC) User-Agent: Opera Mail/10.63 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit