Jos ajatus on, että jotain dataa luetaan ja kirjoitetaan useassa modulissa, niin yksinkertaisinta on sijoittaa se data uuteen moduliin, jonka muut importoivat ja jossa on määriteltynä sen datan käytössä tarvittavat funktiot, "setterit ja getterit", kätevimmin niin, että data on jossain dictin tai luokan kaltaisessa muokattavassa tietorakenteessa. Tai mietitään voisiko sen datan kuitenkin välittää functioiden parametreina ja paluuarvoina.
Jos main.py importoi gui.py:n, ei gui.py voi importoida main.py:tä, eikä siis millään ilveellä pääse suoraan käsiksi main.py:n muuttujiin.
Pythonissa ei ole mitään esim. C-kielen kaltaista "extern"-mekanismia.
Pythonissa "muuttujien" (tunnusten) arvot ovat osoitteentapaisia viittauksia objekteihin, eikä yhdessä modulissa määriteltyjä viittauksia voi toisesa modulissa muuttaa. Itse objektien sisältöä voi kyllä muuttaa, paitsi jos ei voi. Siten listaa tai dictiä jne. voi muokata (objekti on "mutable"), mutta numeerisen tai loogisen muuttujan tai stringin arvon muuttaminen tarkoittaisi objektin ja viittauksen korvaamista uudella, ja sitä siis ei voi toisesta modulista käsin tehdä.
Global-määrettä tarvitaan silloin, kun funktiossa halutaan muuttaa saman modulin juuritasolla määriteltyä objektiviittausta, "muuttujan arvoa". Global-määrettä ei kuitenkaan tarvita, jos vain halutaan muokata viitattua mutable-objektia, esim. listaa. Modulien välillä global ei tarkoita mitään.