Python'da değişkenlerin kapsamı (scope), bir değişkenin hangi kod blokları içinde erişilebilir olduğunu belirler. Değişkenler genellikle iki tür kapsamda bulunur: global kapsam ve yerel kapsam.
1. Global Kapsam (Global Scope)
Global değişkenler, tüm Python dosyası veya programı boyunca, yani her yerden erişilebilen değişkenlerdir. Global kapsamda tanımlanan bir değişken, fonksiyonlar, döngüler ve diğer kod blokları dahil olmak üzere her yerden kullanılabilir.
Özellikler:
- Global değişkenler, genellikle fonksiyonların dışında tanımlanır.
- Fonksiyon içinde global bir değişken kullanılabilir, ancak fonksiyon içinde bu değişkeni değiştirmek için
global
anahtar kelimesi kullanmak gerekir.
Örnek:
x = 10 # Global değişken
def fonksiyon():
print(x) # Global değişkene fonksiyon içinden erişim
fonksiyon() # Çıktı: 10
print(x) # Çıktı: 10
Burada x
global bir değişkendir ve fonksiyonun içinden de erişilebilmektedir.
2. Yerel Kapsam (Local Scope)
Yerel değişkenler, sadece tanımlandıkları fonksiyon veya blok içinde geçerli olan değişkenlerdir. Fonksiyon veya blok dışına çıktığınızda, bu değişkenlere erişemezsiniz. Her fonksiyon çağrıldığında yerel kapsam yeniden oluşturulur.
Özellikler:
- Yerel değişkenler, genellikle fonksiyonların içinde tanımlanır.
- Yerel değişkenler, sadece fonksiyon içinde geçerli olup, fonksiyon dışından erişilemez.
Örnek:
def fonksiyon():
y = 20 # Yerel değişken
print(y) # Fonksiyon içinde kullanılabilir
fonksiyon() # Çıktı: 20
print(y) # Hata: NameError, çünkü 'y' yerel kapsamda
Bu örnekte y
, sadece fonksiyon()
içinde geçerlidir ve dışarıdan erişilemez.
3. Global Anahtar Kelimesi
Bir fonksiyon içinde global bir değişkeni okumak için doğrudan kullanabilirsiniz. Ancak, eğer fonksiyon içinde global bir değişkenin değerini değiştirmek isterseniz, global
anahtar kelimesini kullanmanız gerekir. Aksi halde Python, o fonksiyon içinde yerel bir değişken yaratır.
Örnek:
x = 50 # Global değişken
def degistir():
global x # Global değişkeni değiştirmek için
x = 100 # Global değişkenin değeri değiştirilir
degistir()
print(x) # Çıktı: 100
Eğer global
anahtar kelimesini kullanmasaydık, x
sadece fonksiyon içinde yerel olarak değiştirilmiş olurdu.
4. Global ve Yerel Değişkenlerin Çakışması
Eğer bir fonksiyon içinde global ve yerel değişkenlerin aynı isimde olması durumunda, Python yerel değişkene öncelik verir.
Örnek:
x = 30 # Global değişken
def fonksiyon():
x = 10 # Yerel değişken
print(x) # Yerel değişken kullanılır
fonksiyon() # Çıktı: 10
print(x) # Çıktı: 30 (global 'x' değişmemiştir)
Burada fonksiyon()
içinde x
değişkeni yerel olarak tanımlandığı için global x
'i etkilemez.
5. Nonlocal Anahtar Kelimesi
Python'da iç içe fonksiyonlar varsa, yerel değişkeni bir iç fonksiyonda değiştirmek için nonlocal
anahtar kelimesi kullanılır. Bu, iç fonksiyonun, dış fonksiyondaki yerel değişkeni değiştirmesine olanak tanır.
Örnek:
def dis_fonksiyon():
y = 10 # Dış fonksiyonun yerel değişkeni
def ic_fonksiyon():
nonlocal y # Dış fonksiyonun yerel değişkenini değiştir
y = 20
print("İç fonksiyon:", y)
ic_fonksiyon()
print("Dış fonksiyon:", y)
dis_fonksiyon()
Çıktı:
İç fonksiyon: 20 Dış fonksiyon: 20
Burada nonlocal
, iç fonksiyonun dış fonksiyondaki yerel değişkeni değiştirmesine olanak sağlar.
Özet:
- Global kapsam, fonksiyon dışındaki tüm kod bloklarında tanımlanan ve her yerden erişilebilen değişkenler için kullanılır.
- Yerel kapsam, sadece belirli bir fonksiyon içinde tanımlanan ve o fonksiyonun dışında erişilemeyen değişkenler içindir.
-
global
anahtar kelimesi, bir fonksiyon içinde global bir değişkeni değiştirmek için kullanılır. -
nonlocal
anahtar kelimesi, iç içe fonksiyonlarda dış fonksiyonun yerel değişkenini değiştirmek için kullanılır.