Bevezetés a Python-ba

A Scope határozza meg a python-objektum akadálymentességét. A kód adott változójának eléréséhez meg kell határozni a hatókört, mivel a program bárhonnan nem érhető el. Az a kódolási régió, ahol a változók láthatók, hatókörnek nevezzük. A változók nem láthatók a teljes kódban, a láthatósága korlátozható. A hatókör ellenőrzi, hogy melyik változó lehet 'látott'. A Scope meghatározza azokat a szabályokat, amelyek megmutatják, hogyan és hol lehet keresni egy változót. A változót keresik vagy érték lekéréséhez, vagy hozzárendeléséhez. A névtér a változó vagy a módszer egyedi azonosítása. A névtér megmondja a python-értelmezőnek az objektum nevét és a helyét, ahonnan megpróbálja elérni.

A névterek használatát a LEGB szabály szerint végezzük. A LEGB jelentése: L: Helyi, E: Zárt, G: Globális, B: Beépített. A LEGB sorrendje fontos. A változót először a Helyi keresésben találja, majd a Zárt, majd a globális és végül beépített formában.

Hatálytípusok a Pythonban

Vizsgáljuk meg, hogyan lehet deklarálni egy változót, és hogyan férhetünk hozzá annak hatóköréhez:

1. Helyi hatály

A függvényben definiált változók a változó helyi hatóköre. Ezeket a változókat a függvénytest határozza meg. Megértjük ezt a koncepciót egy példa segítségével. Az 1. példában egy változót vettünk. Num = 0 a függvényen kívül kerül meghatározásra, tehát nem helyi változó. A definíciónk szerint a függvénytesten belül deklarált változók egy helyi változó. Itt a num = 1 egy helyi változó, amelyet deklarálnak és kinyomtatnak a demo függvénybe. Ha ezt a kódot futtatjuk, akkor a kimenetet az alábbiakban adjuk meg.

1. példa:

Kód:

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

Kimenet:

A szám lokális a függvényhez. Ha num változó értéket használunk a függvényben, mielõtt helyben deklarálnánk, akkor hibát okoz.

Lásd 2. példa: Itt az első nyomtatási nyilatkozat python hibát vet fel, mivel a hozzárendelés előtt megpróbáljuk elérni.

2. példa:

Kód:

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

Kimenet:

2. Globális hatály

A program bárhonnan olvasható változóját globális hatókörnek nevezik. Ezek a változók hozzáférhetők a függvényen belül és kívül. Amikor ugyanazt a változót akarjuk használni a program többi részében, akkor globálisnak tekintjük.

A következő 1. példában egy Str változót deklaráltunk, amely kívül esik a függvényen. A demo függvényt hívják, és kinyomtatja az Str változó értékét. A függvényben egy globális változó használatához nem szükséges a globális kulcsszó használata.

1. példa:

Kód:

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

Kimenet:

A 2. példában megpróbáltuk megváltoztatni a globális változó értékét a függvényen belül, ezért hozott kivételt. Ha módosítunk vagy új értéket rendelünk a függvényen belüli változóhoz, akkor globálisan kell írni. Ha el akarja mondani egy python-értelmezőnek, hogy globális változót akar használni, akkor a “globális” kulcsszót kell használni. Ha azt nem deklarálták globálisnak, akkor a python ezt a változót lokálisnak kezeli, ha a függvényben létrehozza vagy módosítja. Ebben az első sorban kivétel van, mivel a python azt feltételezi, hogy lokális változóként szeretnénk hozzárendelni, mivel a demo () függvény belsejébe soroljuk.

2. példa:

Kód:

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

Kimenet:

Ha meg akarjuk változtatni a globális változó értékét a függvényen belül, akkor a globális kulcsszó kerül felhasználásra.

A következő 3. példa megoldotta a fent felmerült problémát.

3. példa:

Kód:

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

Kimenet:

3. Nem helyi vagy záró hatály

Nem lokális változó a változó, amelyet a beágyazott függvény határoz meg. Ez azt jelenti, hogy a változó nem lehet sem helyi, sem globális. Nem lokális változó létrehozásához nem-lokális kulcsszó kerül felhasználásra. A következő kódban létrehozottunk egy külső függvényt, és van egy beágyazott függvény a inner () -ről. A külső () funkció körében a belső () függvényt definiáljuk. Ha megváltoztatjuk a nem-lokális változót, ahogyan azt a belső () függvény definiálja, akkor a változások a külső függvényben is tükröződnek.

1. példa:

Kód:

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

Kimenet:

Ha csak a külső függvény értékét akarjuk használni, és nem akarunk változtatásokat végezni, akkor kommentáljuk (nonlocal a) sort.

2. példa:

Kód:

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

Kimenet:

4. Beépített hatály

Ha egy változó nincs meghatározva a helyi, zárt vagy globális hatókörben, akkor a python a beépített hatókörben keresi. A következő példában az 1 matematikai modulból a pi importálódik, és a pi értékét nem határozzuk meg globálisan, lokálisan és zártként. A Python ezután megkeresi a pi értéket a beépített hatókörben, és kinyomtatja az értéket. Ezért a beépített hatókörben már szereplő nevet nem szabad azonosítóként használni.

1. példa:

Kód:

# 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()

Kimenet:

Következtetés - Hatály a Pythonban

Ebben a cikkben megismerkedtünk a python változó hatókörével. Négy típusú alkalmazási területet megtanultunk: globális hatály, helyi hatály, zárt kör és beépített hatókör. Azt is megtudtuk, mikor kell globális és nem lokális kulcsszavakat használni. Remélem megértette ezt a koncepciót.

Ajánlott cikk

Ez egy útmutató a Python terjedelmére. Itt a Python hatályának típusait és annak példáit, valamint a kód implementációját és kimenetet tárgyaljuk. Megnézheti más kapcsolódó cikkeket is, ha többet szeretne megtudni -

  1. Tuples in Python típusúakkal
  2. A Python beágyazásának áttekintése
  3. Python alternatívák Top 6
  4. Bevezetés az öröklésbe a Pythonban

Kategória: