logo

Python'da Global ve Yerel Değişkenler

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.

Python
def 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.

Python
msg = '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.

Python
def 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)

Python
def 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)

Python
s = '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

Python
a = 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ımFonksiyonların dışında bildirildiBir fonksiyonun içinde bildirildi
Ömür boyuProgram başladığında oluşturulur ve bittiğinde yok edilirFonksiyon çağrıldığında oluşturulur ve geri döndüğünde yok edilir
Veri PaylaşımıTüm işlevlerde paylaşılırPaylaşılmıyor; yalnızca işlevi dahilinde var olur
KapsamProgramın herhangi bir yerinden erişilebilirYalnızca işlevin içinden erişilebilir
Gerekli parametrelerParametre aktarımına gerek yokFonksiyon içindeki parametreler veya atamalar aracılığıyla oluşturulabilir
DepolamakGenel ad alanında yönetilir (sabit bellek konumunda değil)İşlevin yerel ad alanında saklanır (yığın çerçevesi)
DeğerDeğişiklikler programın tamamını etkilerDeğişiklikler yereldir ve diğer işlevleri etkilemez