🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: [jak zdefiniować zmienną globalną]

#27820
From: Jan Kaliszewski
Date: Thu, 25 Nov 2010 04:27
47 lines
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-mail
References: <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