Python'da değişkenler verilerin depolanmasında ve yönetilmesinde önemli bir rol oynar. Davranışları ve erişilebilirlikleri programda tanımlandıkları yere bağlıdır. Bu makalede küresel ve yerel değişkenlerin nasıl çalıştığını ve ortak senaryoları örneklerle inceleyeceğiz.
Yerel Değişkenler
Yerel değişkenler bir fonksiyonun içinde oluşturulur ve yalnızca fonksiyonun yürütülmesi sırasında bulunur. Fonksiyonun dışından bunlara erişilemez.
SDLC
Örnek 1: Bu kodda, bir fonksiyonun içinde yerel bir değişken oluşturup ona erişiyoruz.
Pythondef greet(): msg = 'Hello from inside the function!' print(msg) greet()
Çıkış
Hello from inside the function!
Açıklama: Tanımlıyoruz selamlaşmak() yerel bir değişkenle mesaj ve yazdırın. Mesaj yalnızca işlevin yürütülmesi sırasında mevcut olduğundan, ona işlev içinden erişilir. Arama selamlaşmak() mesajı görüntüler.
Örnek 2 : Bu örnekte, bir fonksiyonun içinde yerel bir değişken oluşturuyoruz ve daha sonra bu değişkene fonksiyonun dışından erişmeye çalışıyoruz, bu da hataya neden oluyor.
Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg)
Çıkış
Geri izleme (en son çağrı en son):
'/home/guest/sandbox/Solution.py' dosyası 6. satırda
print('Dış fonksiyon:' mesajı)
NameError: 'mesaj' adı tanımlı değil
Açıklama: mesaj içeride yerel bir değişkendir selamlaşmak() ve yalnızca oradan erişilebilir. Dışarıdan yazdırmak, global olarak mevcut olmadığından hataya neden olur.
Küresel Değişkenler
Global değişkenler tüm fonksiyonların dışında bildirilir ve iç fonksiyonlar da dahil olmak üzere programın herhangi bir yerinden erişilebilir.
Bu örnekte global bir değişken yaratıyoruz ve ona bir fonksiyonun hem içinden hem de dışından erişiyoruz.
Pythonmsg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg)
Çıkış
Inside function: Python is awesome! Outside function: Python is awesome!
Açıklama: mesaj hem içinden hem de dışından erişilebilen global bir değişkendir. görüntülemek() işlev. Arama görüntülemek() globali yazdırır mesaj ve yazdırma mesaj işlevin dışında beklendiği gibi çalışır.
Not: Bir fonksiyonun içinde (yerel kapsam) bir değişken bulunamazsa Python bunu otomatik olarak küresel kapsamda arar. Ancak yerel bir değişken global değişkenle aynı ada sahipse, o fonksiyonun içindeki global değişkeni gölgeleyecektir.
Yerel ve Global değişkenlerin kullanımı
Bir değişken hem global hem de yerel olarak aynı adla tanımlanmışsa, yerel değişken, fonksiyonun içindeki global değişkeni gölgeler. Yerel değişkende yapılan değişiklikler, siz değişkeni açıkça global olarak bildirmediğiniz sürece, global değişkeni etkilemez.
Pythondef fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s)
Çıkış
Me too. I love Geeksforgeeks
Açıklama: İçeri eğlence() S 'Ben de' olarak ayarlanmış yerel bir değişkendir. ve bu değeri yazdırır. Küreselin dışında S 'Geeksforgeeks'i seviyorum' olarak kalıyor, bu yüzden yazdırılıyor S daha sonra küresel değeri gösterir.
Bir Fonksiyonun İçindeki Global Değişkenleri Değiştirmek
Varsayılan olarak, bir fonksiyonun içindeki global değişken, onu global olarak bildirmeden değiştirilemez. Python'u denerseniz, değişkeni yerel olarak ele aldığı için bir hata ortaya çıkar. Genel bir değişkeni değiştirmek için şunu kullanın: genel anahtar kelime .
Global olmadan (hataya neden olur)
Pythondef fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun()
Çıkış
UnboundLocalError: atamadan önce başvurulan yerel değişken 'ler'
Açıklama: Fun()'ın içinde Python, biz onu değiştirmeye çalıştığımızdan dolayı s'nin yerel olduğunu varsayar. Ancak bu satırdan önce yerel bir s bulunmadığından bir hata oluşur.
Global ile (doğru çalışıyor)
Pythons = 'Python is great!' def fun(): global s s += ' GFG' # Modify global variable print(s) s = 'Look for GeeksforGeeks Python Section' # Reassign global print(s) fun() print(s)
Çıkış
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section
Açıklama:
- s'yi global olarak bildirmek Python'a değişkeni global kapsamdan kullanmasını söyler.
- İşlev önce 'GFG'yi ekler, ardından s'yi yeniden atar.
- Değişiklikler fonksiyonun dışında da devam eder.
Aynı Adla Küresel ve Yerel
Pythona = 1 # Global variable def f(): print('f():' a) # Uses global a def g(): a = 2 # Local shadows global print('g():' a) def h(): global a a = 3 # Modifies global a print('h():' a) print('global:' a) f() print('global:' a) g() print('global:' a) h() print('global:' a)
Çıkış
global: 1 f(): 1 global: 1 g(): 2 global: 1 h(): 3 global: 3
Açıklama:
- f() global a'yı değiştirmeden yazdırır.
- g(), yerel olanı yaratır ve küresel olanı el değmeden bırakır.
- h() a'yı global olarak bildirir ve onu değiştirir.
Yerel Değişken ve Küresel Değişken
| Karşılaştırma esası | Küresel Değişken | Yerel Değişken |
|---|---|---|
| Tanım | Fonksiyonların dışında bildirildi | Bir fonksiyonun içinde bildirildi |
| Ömür boyu | Program başladığında oluşturulur ve bittiğinde yok edilir | Fonksiyon çağrıldığında oluşturulur ve geri döndüğünde yok edilir |
| Veri Paylaşımı | Tüm işlevlerde paylaşılır | Paylaşılmıyor; yalnızca işlevi dahilinde var olur |
| Kapsam | Programın herhangi bir yerinden erişilebilir | Yalnızca işlevin içinden erişilebilir |
| Gerekli parametreler | Parametre aktarımına gerek yok | Fonksiyon içindeki parametreler veya atamalar aracılığıyla oluşturulabilir |
| Depolamak | Genel ad alanında yönetilir (sabit bellek konumunda değil) | İşlevin yerel ad alanında saklanır (yığın çerçevesi) |
| Değer | Değişiklikler programın tamamını etkiler | Değişiklikler yereldir ve diğer işlevleri etkilemez |