User Tools

Site Tools


help:python:wspoldzielenie_zmiennych

Wspoldzielenie zmiennych pomiedzy plikami

Czasami sie zdarza ze twoj skrypt sie rozrosnie na tyle, ze lepiej byloby gdyby rozdzielic go na pare plikow. Dzieje sie tak bardzo czesto jesli chcesz np oddzielic konfiguracje od kodu, albo plik z tlumaczeniami.

Jako ze sam musze za kazdym razem szukac zeby to znalezc, stwierdzilem ze to tu zapisze.

Zalozmy ze mamy plik main.py i konfig.py. Naturalnie chcemy przechwycic zmienne z pliku konfig.py do main.py.

### konfig.py
a = 123
### main.py
print a

Najlepsza metoda do zalaczenia innego pliku z pythonie jest komenda import. Pozwala ona rowniez na uruchomienie pliku zewnetrznego. Niestety jest jeszcze drobny szczegol.

Zalaczamy plik konfig do pliku main.

### main.py
import konfig
print a

Uzyskujemy z tego nastepujace wyniki:

NameError: name 'a' is not defined

czyli zadna zmienna nie zostala zmieniona ani nadpisana. To dlatego, ze zaimportowany plik nie zmienia zmiennych ogolnych, a aby otrzymac dostep do zmiennych z pliku konfig.py nalezy sie do niego dokladnie odwolac:

print konfig.a

da nam odpowiednio

123

Aby zmienne z konfig.py byly normalnymi zmiennymi z pliku main.py (tak zeby nie trzeba bylo sie do nich specjalnie odwolywac), nalezy zmienic linijke importujaca plik:

### main.py
from konfig import *
print a

wtedy otrzymamy tak jak sie spodziewamy

123

Podsumowanie

Niby proste, ale tysiace dziwnych rozwiazan ktore mozna znalezc w internecie wcale tego nie upraszcza. W ten sposob mozna rowniez uruchomic zewnetrzny plik i nie trzeba odwolywac sie do roznych komend typu exec, fileexec. Sa jeszcze bardziej zaawansowane sposoby uruchamiania zewnetrznych plikow os.startfile i np os.system.

Zrodla

help/python/wspoldzielenie_zmiennych.txt · Last modified: 2012/11/21 by 127.0.0.1

Driven by DokuWiki