Galiojimo sritys ir vardų erdvės yra esminiai efektyviam programavimui Python. Šios koncepcijos padeda valdyti kintamųjų diapazoną ir jų matomumą, kas ypač svarbu dirbant su funkcijomis.
Svarbiausios išvados
- Kintamojo galiojimo sritis nustato, kurioje kodo dalyje galima pasiekti šį kintamąjį.
- Vietiniai kintamieji egzistuoja tik funkcijoje, kurioje jie buvo apibrėžti.
- Pasauliniai kintamieji yra matomi visame modulyje, nebent jie yra perrašomi funkcijoje.
- Raktinis žodis global leidžia pasiekti ir manipuliuoti pasauliniais kintamaisiais funkcijoje.
- Neteisingas pasaulinių kintamųjų naudojimas gali privesti prie klaidų ir sunkiai suprantamo kodo.
Įvadas į galiojimo sritis
Šiame skyriuje sužinosite, kaip veikia galiojimo sritys Python kalboje. Mes apžvelgsime, kaip apibrėžiami ir naudojami vietiniai bei pasauliniai kintamieji ir kaip užtikrinti, kad jūsų kodas būtų aiškus ir lengvai prižiūrimas.
Galiojimo sričių apibrėžimas
Pradėsime nuo paprasto pavyzdžio. Tarkime, turite kintamąjį Oras, kuris turi vertę "Saulė". Tai galėtų atrodyti taip:

Dabar norime sukurti funkciją, kuri pakeis orą, pavyzdžiui, funkciją Lietus:
Šioje funkcijoje mes pakeisime kintamąjį Oras į "Lietus" ir tikimės, kad rezultatas bus matomas pagrindinėje funkcijoje.
Vietiniai ir pasauliniai kintamieji
Jei jūs iškviečiate funkciją ir nustatote kintamąjį Oras šioje funkcijoje, pastebėsite, kad Oras vertė pasaulinėje aplinkoje nebus pakeista. Vietoj to, pirminė vertė "Saulė" išliks. Tam yra paprasta priežastis: Python traktuoja Orą funkcijoje kaip vietinį kintamąjį.

Tai reiškia, kad vietinis kintamasis uždengia globalų kintamąjį su tuo pačiu pavadinimu. Tai aiškiai pasireiškia klaidos pranešime: "local variable 'Oras' not used". Tai rodo, kad vietinis kintamasis buvo sukurtas funkcijų galiojimo srityje ir negali pasiekti pasaulinio kintamojo.
Pakeisti pasaulinio kintamojo vertę
Norėdami pakeisti pasaulinio kintamojo vertę funkcijoje, turite naudoti raktinį žodį global:

Naudodami raktinį žodį global, pranešate Python, kad norite pasiekti ir pakeisti jau apibrėžtą pasaulinį kintamąjį. Kai vėl iškviesite funkciją Lietus, Oras vertė tikrai bus pakeista į "Lietus". Tai leidžia jums naudoti funkciją pasauliniams būsenoms valdyti.

Vietinių kintamųjų naudojimas
Svarbu pažymėti, kad vietiniai kintamieji egzistuoja tik savo apibrėžtoje funkcijoje. Jei, pavyzdžiui, apibrėžiate vietinį kintamąjį Vėjo greitis funkcijoje Lietus, jis bus atpažįstamas tik šioje funkcijoje.

Prašymas pasiekti Vėjo greitis už šios funkcijos ribų nebus įmanoma. Vietoj to, gausite klaidos pranešimą, kad nėra nuorodos į Vėjo greitis pasaulinėje vardų erdvėje.
Vietinių ir pasaulinių kintamųjų palyginimas
Pakartokime skirtumus tarp vietinių ir pasaulinių kintamųjų:
- Pasauliniai kintamieji: matomi visame modulyje. Juos galima skaityti ir keisti bet kur, jei naudojate raktinį žodį global funkcijoje.
- Vietiniai kintamieji: matomi tik funkcijoje, kurioje jie buvo apibrėžti. Jie nėra pasiekiami už šios funkcijos ribų.

Galiojimo sritys ir geriausios praktikos
Svarbu būti atsargiems naudojant galiojimo sritis. Pernelyg didelis priklausymas nuo pasaulinių kintamųjų gali sukelti neaiškų ir sunkiai prižiūrimą kodą. Geras stilius yra vengti pasaulinių kintamųjų, nebent tai būtina. Vietoj to funkcijos ir metodai turėtų naudoti parametrus ir grąžinti rezultatus. Tai padaro jūsų kodą aiškesnį ir suprantamesnį.
Papildomos mintys taip pat yra svarbios: užtikrinkite, kad kiekviena funkcija, kuri naudoja duomenis iš pasaulinės aplinkos, būtų aiškiai pavadinta ir gerai dokumentuota. Taip sumažinsite galimų klaidų šaltinius.
Santrauka - suprasti galiojimo sritis ir vardų erdves Python kalboje
Galiojimo sričių ir vardų erdvių koncepcijos yra svarbios švariai programavimo praktikai Python. Supraskite skirtumą tarp vietinių ir pasaulinių kintamųjų ir taikykite geriausias praktikas. Taip sukuriate patikimą ir lengvai prižiūrimą kodo dizainą.
Dažniausiai užduodami klausimai
Kas yra galiojimo sritis Python?Galiojimo sritis Python apibrėžia, kur kintamasis egzistuoja kode ir kur jis gali būti pasiektas.
Kaip galiu naudoti pasaulinį kintamąjį funkcijoje?Norėdami pasiekti pasaulinį kintamąjį funkcijoje, turite naudoti raktinį žodį global.
Kodėl turėčiau naudoti vietinius kintamuosius?Vietiniai kintamieji užkerta kelią konfliktams su pasauliniais kintamaisiais ir padaro kodą aiškesnį ir lengviau prižiūrimą.
Kas nutinka, jei bandysiu pasiekti vietinį kintamąjį už jos funkcijos ribų?Gaunate klaidą, nes vietiniai kintamieji egzistuoja tik funkcijoje ir iš išorės nėra matomi.
Kodėl pasauliniai kintamieji yra problemiški?Pasauliniai kintamieji gali padaryti kodą mažiau nuspėjamą ir sunkiau suprantamą, dėl ko sumažėja jų priežiūra.