====== 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 ==== * http://stackoverflow.com/a/423401 * http://effbot.org/pyfaq/how-do-i-share-global-variables-across-modules.htm