merhaba arkadaşlar bir fonksiyon oluşturdum ve içerisinde de boş bir list tanımladım. bu liste fonksiyon içinde eleman append ediyorum fakat doğal olarak fonksiyon her çağrıldığında içerde tanımlamış olduğum list boşaltılıyor. Listi fonksiyon içersinde tanımlamam lazım global olarak veya fonksiyon parametresi olarak listi dişarıdan çekmeye çalıiştığımda işler baya uzayacak. içerde oluşturduğum list elemanarını tutmanın bir yolu varmı. teşekkürler
Merhaba. Yapmaya çalıştığınız şeyi açıklarsanız daha kolay yardım edebiliriz ama şöyle bir şey yapılabilir:
def fonksiyonu_oluştur():
liste = []
def fonksiyon(n):
liste.append(n)
print(liste)
return fonksiyon
fonksiyon = fonksiyonu_oluştur()
fonksiyon(1)
fonksiyon(3)
fonksiyon(2)
2 Beğeni
Bunun için bir kaç yöntem var.
1) Sınıf kullanmak.
class Sinif:
def __init__(self):
self.liste = []
def fonksiyon(self):
self.liste.append(0)
Sinif = Sinif()
for n in range(5):
Sinif.fonksiyon()
print(Sinif.liste)
2) Parametre ve return kullanmak.
def fonksiyon(liste):
liste.append(0)
return liste
liste = []
for n in range(5):
liste = fonksiyon(liste)
print(liste)
3) Özyineleme Fonksiyonu Kullanmak.
def fonksiyon(liste):
liste.append(0)
if len(liste) == 5:
return liste
else:
return fonksiyon(liste)
liste = []
liste = fonksiyon(liste)
print(liste)
4) Global hale getirmek.
liste = []
def fonksiyon():
global liste
liste.append(0)
for n in range(5):
fonksiyon()
print(liste)
Her birinin çıktısı en sonunda [0, 0, 0, 0, 0] olacaktır.
yerel değişkenleri fonksiyonun dışına taşımak için genellikle return kullanırız.
Eğer sınıfta olduğu gibi tek bir listeyi pek çok fonksiyon içerisinde kullanmak istiyorsanız global daha elverişli olacaktır. Ya da doğrudan sınıf oluşturulabilir.
2 Beğeni
C’deki static
degiskenler. Her projede en az bir kere karsima cikiyorlar ve her seferinde ayni cirkin alternatiflerden birini secmek zorunda kaliyorum. (Cogu yukarda var) Sinif disi fonksiyonlarda en cok kullandigim, degiskeni fonksiyon objesine baglamak:
def count():
count._last_num += 1
print(count._last_num)
count._last_num = 0
Sinif icinde nasil yapiliyor bilmiyorum bile. Ugrasmayip member tanimliyorum.