Sissejuhatus Pythoni rakendusalasse

Ulatus määratleb python-objekti ligipääsetavuse. Koodi konkreetsele muutujale juurde pääsemiseks tuleb määratleda ulatus, kuna sellele ei pääse juurde kuskilt programmist. Konkreetset kodeerimispiirkonda, kus muutujad on nähtavad, tuntakse ulatusena. Muutujad pole kogu koodis nähtavad, selle nähtavust saab piirata. Ulatus kontrollib, millist muutujat saab näha. Ulatus määratleb reeglistiku, mis ütleb meile, kuidas ja kust muutujat otsida. Muutujat otsitakse kas väärtuse leidmiseks või väärtuse määramiseks. Nimeseruum on muutuja või meetodi kordumatu identifitseerimine. Nimeseruum ütleb pythontõlgendile objekti nime ja asukoha, kust ta sellele pääseb.

Nimeruumides otsitakse ulatuse eraldusvõimet vastavalt LEGB reeglile. LEGB tähistab: L: kohalik, E: suletud, G: ülemaailmne, B: sisseehitatud. LEGB järjestus on oluline. Muutujat otsitakse kõigepealt lokaalses, seejärel suletud, seejärel globaalset ja lõpuks sisseehitatud.

Reguleerimisala tüübid Pythonis

Uurime, kuidas muutujat kuulutada ja kuidas pääseda juurde selle ulatusele:

1. Kohalik ulatus

Funktsioonis määratletud muutujad on muutuja lokaalne ulatus. Need muutujad on määratletud funktsiooni korpuses. Mõistame seda mõistet näite abil. Selles näites 1 oleme võtnud ühe muutuja num. Num = 0 on väljaspool funktsiooni määratletud, nii et see pole lokaalne muutuja. Meie definitsiooni kohaselt on funktsiooni korpuses deklareeritud muutujad lokaalsed muutujad. Siin num = 1 on lokaalne muutuja, mis deklareeritakse ja prinditakse funktsiooni demo sisse. Selle koodi käivitamisel antakse väljund allpool.

Näide nr 1:

Kood:

num=0
def demo():
#print(num)
num=1
print("The Number is:", num)
demo()

Väljund:

Num on funktsiooni suhtes lokaalne. Kui kasutame funktsioonis num muutuja väärtust enne selle lokaalseks kuulutamist, põhjustab see tõrke.

Vaadake näidet 2: siin tõstab esimene trükisõnum pütooni tõrke, kuna me üritame sellele pääseda enne määramist.

Näide 2:

Kood:

num=0
def demo():
print(num) //Raises an Error
num=1
print("The Number is:", num)
demo()

Väljund:

2. Globaalne rakendusala

Muutujat, mida saab programmist kõikjal lugeda, tuntakse üldise ulatusena. Nendele muutujatele pääseb juurde nii funktsioonis kui ka väljaspool seda. Kui tahame sama muutujat kasutada ka ülejäänud programmis, kuulutame selle globaalseks.

Järgnevas näites 1 oleme deklareerinud muutuja Str, mis on väljaspool funktsiooni. Funktsiooni demo kutsutakse ja see prindib muutuja Str väärtuse. Globaalse muutuja kasutamiseks funktsioonis ei ole vaja globaalset märksõna kasutada.

Näide nr 1:

Kood:

def demo():
print(Str)
# Global
Str = "You are clever"
demo()

Väljund:

Järgnevas näites 2 üritasime muuta funktsiooni sees globaalse muutuja Str väärtust, mistõttu see tõstis välja erandi. Kui muudame või omistame funktsiooni sees olevale muutujale uue väärtuse, peame kirjutama globaalse. Kui soovite öelda pythontõlgendile, et soovite kasutada globaalset muutujat, kasutatakse märksõna “globaalne”. Kui seda pole kuulutatud globaalseks, käsitab python seda muutujat lokaalseks, kui see luuakse või modifitseeritakse funktsiooni sees. Selles esimeses reas on erand, kuna python eeldab, et funktsiooni demo () sisemisele strlemisele omistamise tõttu soovime määramist kohalikuks muutujaks.

Näide 2:

Kood:

def demo():
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Väljund:

Kui tahame muuta funktsiooni globaalse muutuja väärtust, kasutatakse globaalset märksõna.

Järgmine näide 3 lahendas ülaltoodud probleemi.

Näide 3:

Kood:

def demo():
global Str
print(Str)
Str = "You are smart"
print(Str)
# Global scope
Str = "You are Clever"
demo()
print(Str)

Väljund:

3. Mitte-kohalik või piiritlev ulatus

Mittelokaalne muutuja on muutuja, mis on määratletud pesastatud funktsioonis. See tähendab, et muutuja ei saa olla ei lokaalses ega globaalses ulatuses. Mittelokaalse muutuja loomiseks kasutatakse mittelokaalset märksõna. Järgnevas koodis lõime välise funktsiooni ja seal on pesastatud funktsioon inner (). Välise () funktsiooni ulatuses on määratletud sisemine () funktsioon. Kui muudame mittelokaalset muutujat, nagu see on määratletud sisemises () funktsioonis, kajastuvad muutused ka välisfunktsioonis.

Näide nr 1:

Kood:

def func_outer():
x = "local"
def func_inner():
nonlocal x
x = "nonlocal"
print("inner:", x)
func_inner()
print("outer:", x)
func_outer()

Väljund:

Kui tahame kasutada ainult välimise funktsiooni väärtust ega soovi muudatusi teha, kommenteerige rida (mittelokaalne a).

Näide 2:

Kood:

def func_outer():
a = "local"
def func_inner():
#nonlocal a
a = "nonlocal"
print("inner:", a)
func_inner()
print("outer:", a)
func_outer()

Väljund:

4. Sisseehitatud ulatus

Kui muutujat pole määratletud lokaalses, suletud või globaalses ulatuses, otsib python seda sisseehitatud ulatuses. Järgnevas näites imporditakse 1 matemaatikamoodulist pi ja pi väärtust ei määratleta globaalses, lokaalses ja suletud olekus. Seejärel otsib Python sisseehitatud ulatuses pi väärtuse ja prindib selle väärtuse. Seetõttu ei tohiks juba sisseehitatud ulatuses esinevat nime identifikaatorina kasutada.

Näide nr 1:

Kood:

# Built-in Scope
from math import pi
# pi = 'Not defined in global pi'
def func_outer():
# pi = 'Not defined in outer pi'
def inner():
# pi = 'not defined in inner pi'
print(pi)
inner()
func_outer()

Väljund:

Järeldus - ulatus Pythonis

Selles artiklis õppisime python muutuja ulatust. Õppisime nelja tüüpi ulatust - globaalne ulatus, kohalik ulatus, suletud ulatus ja sisseehitatud ulatus. Samuti õppisime, millal kasutada globaalseid ja mittelokaalseid märksõnu. Loodetavasti saite sellest kontseptsioonist aru.

Soovitatav artikkel

See on juhend Pythoni ulatuse kohta. Siin käsitleme Pythoni ulatuse tüüpe ja selle näiteid ning koodi rakendamist ja väljundit. Lisateavet leiate ka meie muudest seotud artiklitest -

  1. Tuplid Pythonis tüüpidega
  2. Kapseldamise ülevaade Pythonis
  3. Pythoni alternatiivid | 6 parimat
  4. Sissejuhatus pärimisse Pythonis

Kategooria: