jesteś tutaj
321
Trochę klasy
Radzenie sobie z zasięgiem
Aby zademonstrować, co się dzieje ze zmiennymi używanymi w funkcji, poeksperymentujmy trochę w wierszu
poleceń powłoki Pythona. Wypróbuj kod przedstawiony poniżej, czytając go. Nasze komentarze ponumerowaliśmy
od 1 do 8, aby przeprowadzić Cię przez kolejne kroki przykładu.
1. Funkcja soundbite
przyjmuje
jeden argument.
2. Wartość zostaje
przypisana do
zmiennej wewnątrz
tej funkcji.
3. Argument zostaje
przypisany do innej
zmiennej wewnątrz tej
funkcji.
4. Zmienne
funkcji
używane do
wyświetlenia
komunikatu.
5. Wartość zostaje przypisana
do zmiennej o nazwie „name”.
6. Funkcja soundbite
zostaje wywołana.
7. Po wyświetleniu
danych przez
funkcję, wartość
zmiennej name jest
nadal dostępna.
8. Jednak żadna
ze zmiennych
wykorzystywanych
wewnątrz funkcji
już nie jest
dostępna, ponieważ
istnieją one jedynie
w obrębie jej
zestawu.
Gdy zmienne definiowane wewnątrz zestawu funkcji, istnieją tylko wtedy, gdy ta funkcja działa. Oznacza to, że
zmienne te znajdują się „w zasięgu”, dzięki czemu widoczne i można z nich korzystać w zestawie funkcji. Jednak
gdy funkcja się kończy, wszystkie zdefiniowane w jej obrębie zmienne niszczone — zaczynają znajdować się „poza
zasięgiem” — i wszystkie używane przez nie zasoby zostają zwolnione przez interpreter.
To właśnie dzieje się z trzema zmiennymi wykorzystywanymi wewnątrz funkcji
soundbite
, jak widać to powyżej.
W chwili gdy funkcja ta dobiega końca, zmienne
insider
,
outsider
i
from_outside
przestają istnieć. Wszelkie próby
odwołania się do nich spoza zestawu funkcji (czyli spoza zasięgu tej funkcji) powodują wystąpienie błędu
NameError
.

Get Python Rusz głową! Wydanie II now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.