Python global, local ve nonlocal Değişkenler
Bu öğreticide Python Global değişkenleri, Yerel değişkenler, Yerel olmayan değişkenler ve bunların nerede kullanılacağı hakkında bilgi edineceksiniz.
Genel Değişkenler
Python’da, fonksiyonun dışında veya global kapsamda bildirilen bir değişken, global değişken olarak bilinir. Bu, global bir değişkene fonksiyonun içinden veya dışından erişilebileceği anlamına gelir.
Python’da global bir değişkenin nasıl oluşturulduğuna dair bir örnek görelim.
Örnek 1: Global Değişken Oluşturun
1 2 3 4 5 6 7 8 | x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x) |
Çıktı
1 2 | <samp>x içeride: küresel x dış: küresel</samp> |
Yukarıdaki kodda oluşturduğumuzxfoo()
global bir değişken olarak ve global değişkeni yazdırmak için a tanımlıx. foo()
Son olarak, değerini yazdıracak olanı çağırırız .x.
Ya değerini değiştirmek istersenxbir fonksiyonun içinde?
1 2 3 4 5 6 7 | x = "global" def foo(): x = x * 2 print(x) foo() |
Çıktı
1 | <samp>UnboundLocalError: atamadan önce başvurulan yerel değişken 'x'</samp> |
Python işlem yaptığı için çıktı bir hata gösteriyor.xyerel bir değişken olarak vexayrıca içeride tanımlı değil foo()
.
Bunu yapmak için global
anahtar kelimeyi kullanıyoruz. Daha fazla bilgi edinmek için Python Global Anahtar Kelimesini ziyaret edin .
Yerel Değişkenler
İşlev gövdesinde veya yerel kapsamda bildirilen bir değişken, yerel değişken olarak bilinir.
Örnek 2: Kapsam dışında yerel değişkene erişme
1 2 3 4 5 6 | def foo(): y = "local" foo() print(y) |
Çıktı
1 | <samp>NameError: 'y' adı tanımlı değil</samp> |
Yerel bir değişkene erişmeye çalıştığımız için çıktı bir hata gösteriyoryglobal bir kapsamda yerel değişken yalnızca içeride foo()
veya yerel kapsamda çalışır.
Python’da yerel bir değişkenin nasıl oluşturulduğuna dair bir örnek görelim.
Örnek 3: Yerel Değişken Oluşturun
Normalde, yerel bir değişken oluşturmak için işlevin içinde bir değişken bildiririz.
1 2 3 4 5 | def foo(): y = "local" print(y) foo() |
Çıktı
1 | <samp>yerel</samp> |
Daha önceki soruna bir bakalım neredexglobal bir değişkendi ve değiştirmek istedikxiçinde foo()
.
Küresel ve yerel değişkenler
Burada global değişkenlerin ve yerel değişkenlerin aynı kodda nasıl kullanılacağını göstereceğiz.
Örnek 4: Global ve Yerel değişkenleri aynı kodda kullanma
1 2 3 4 5 6 7 8 9 10 | x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo() |
Çıktı
1 2 | <samp>küresel küresel yerel</samp> |
Yukarıdaki kodda, beyan ederizxküresel olarak veyiçinde yerel bir değişken olarak foo()
. *
Ardından, global değişkeni değiştirmek için çarpma operatörünü kullanırız.xve ikisini de yazdırıyoruzxvey.
çağrıldıktan sonra foo()
, değerixolur global global
çünkü x * 2
iki kez yazdırmak için kullandık global
. Bundan sonra yerel değişkenin değerini yazdırıyoruz.yyani local
.
Örnek 5: Global değişken ve aynı ada sahip Yerel değişken
1 2 3 4 5 6 7 8 9 | x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x) |
Çıktı
1 2 | <samp>yerel x: 10 küresel x: 5</samp> |
Yukarıdaki kodda aynı adı kullandıkxhem global değişken hem de yerel değişken için. Değişken her iki kapsamda da bildirildiği için aynı değişkeni yazdırdığımızda farklı bir sonuç alıyoruz, yani yerel kapsam içeride foo()
ve küresel kapsam dışında foo()
.
İçindeki değişkeni yazdırdığımızda foo()
çıktı verir local x: 10
. Buna değişkenin yerel kapsamı denir.
Benzer şekilde, değişkeni dışına yazdırdığımızda, foo()
çıktısı alınır .küresel x: 5. Buna değişkenin global kapsamı denir.
Yerel Olmayan Değişkenler
Yerel kapsamı tanımlanmamış iç içe işlevlerde yerel olmayan değişkenler kullanılır. Bu, değişkenin ne yerel ne de global kapsamda olamayacağı anlamına gelir.
Python’da yerel olmayan bir değişkenin nasıl kullanıldığına dair bir örnek görelim.
nonlocal
Yerel olmayan değişkenler oluşturmak için anahtar kelimeler kullanırız .
Örnek 6: Yerel olmayan bir değişken oluşturun
1 2 3 4 5 6 7 8 9 10 11 12 13 | def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer() |
Çıktı
1 2 | <samp>iç: yerel olmayan dış: yerel olmayan</samp> |
Yukarıdaki kodda iç içe bir inner()
fonksiyon vardır. nonlocal
Yerel olmayan bir değişken oluşturmak için anahtar kelimeler kullanırız . İşlev inner()
, başka bir işlevin kapsamında tanımlanır outer()
.
Not : Yerel olmayan bir değişkenin değerini değiştirirsek, değişiklikler yerel değişkende görünür.