Python Egitim Notlari - IV
- Sevdanur GENC

- Jan 27, 2013
- 3 min read
Egitimin dorduncu adiminda, Python’da cok sik bir sekilde kullanabilecegimiz komutlardan bahsetmeye calisacagim. Tabi bunlarla ilgili Tutorial’lara, kurmus oldugunuz Python paketleri icerisindeki The Python Tutorial.html icerisinden de ulasabilirsiniz.
- Metin disarisinda vermis oldugumuz parametreleri %s ile okuyabiliriz.
a = 1
b = 2
string = "%s , $s" % (a,b)
string = "%s" % a
string = "{sayi1} ve {sayi2}".format(sayi1=a, sayi2=b)
Dosyalama Islemleri
open metodu dosyayi acmak icin kullanilir.
dosya = open("dosya_adi","w")
w: yazma modudur.uzerine yaziliyor eski bilgiler siliniyor.
dosya = open("deneme.txt","w")
dosya.writelines() #birden fazla satir yazabiliyoruz dosya icerisine
dosya.write("merhaba dunya")
dosya.close()
r: okuma modudur.
dosya = open("deneme.txt","r")
dosya.readline() #tek satiri okur
dosya.readlines() #butun satirlarin tamamini okuyor
dosya.close()
dosya = open("deneme.txt","a")
a: append modudur. Uzerine yazmaya devam edebiliriz.
dosya.write("deneme 1 2")
dosya.close()
dosya = open("deneme.txt", "r")
dosya.readlines() #yazilarin tamamini bir dizi seklinde vermektedir, for ile cok fazla calisilabilir
dosya = open("deneme.txt","r")
satirlar = dosya.readlines()
dosya.close()
for satir in satirlar:
print satir
dosya.tell() #dosyanin sonuna kadar okuma yapar. kac karakter varsa soyler.
dosya.seek(12)
dosya.readline() #kacinci karakteri gormek istiyorsaniz onu yazariz
dosya.seek(0)
dosya.readline() #tum verileri okur.
wb: metin editoru ile acabiliyoruz
rb: varsayilan bir dosya olarak acar
Istisnalar, Hata Firlatma
C'de yok nesne yonelimmli programlarda vardir. valueerror'lar ile istisnalar donmektedir.
try:
int("a")
except:
print "sayi donusturulemedi"
try:
int("a")
except ValueError:
print "deneme"
except Exception:
print "a"
finally:
print "x"
Bu sekilde sadece valueerror hatalarini yakalar diger hatalari gostermez. Exception butun hatalari gosterir. Finally blogu ise ne olursa olsun calistirilacak bir ozelliktir.
try:
dosya = open("deneme2.txt","r")
print dosya.readlines()
except:
print "dosya bulunamadi"
finally:
dosya.close()
try:
dosya = open("deneme2.txt","r")
print dosya.readlines()
except IOError as e:
print "dosya bulunamadi, %s" % e
finally:
dosya.close()
try:
dosya = open("deneme2.txt","r")
print dosya.readlines()
a = int("324fw")
except IOError as e:
print "dosya bulunamadi, %s" % e
except ValueError as e:
print "sayi donusturulemedi"
finally:
print "dosya kapaniyor"
dosya.close()
try:
dosya = open("deneme2.txt","w") #yazma modunu actigimizda hata vermeyecek
dosya.wrte("a")
a = int("324fw")
except IOError"
print "dosya bulunamadi"
except ValueError:
print "sayi donusturulemedi"
finally:
print "dosya kapaniyor"
dosya.close()
def deneme():
a = ""
raise Exception("") #istedigimiz sey olmayinca kendi istisnamizi yaratabiliriz.
#raise ValueError("deneme")
Ekran ciktisi su sekilde olacaktir :
>>> deneme()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in deneme
ValueError: deneme
Sinif Tanimlamalari
class Sinif: seklinde sinif tanimlamasi yapilir. Sinifin yapici fonksiyonuna ne istiyorsan onu yaziyoruz. class Sinif: def __init___(self): #sinifin gostericisidir. self.isim = "isim" def isim_getir(self): return self.isim cagirirken ise; ornek = Sinif() seklinde kullaniriz. Ornek degeri girildiginde main metodu seklinde karsimiza gelecektir. ornek.isim_getir() seklindede fonksiyonu cagirabiliriz. Gelen deger "isim" olacaktir. dir(ornek) girildigi zaman yine hangi module de oldugu ve diger tum ozellikleri karsimiza getirecektir. python'da private ve protect nesne degiskenleri tanimlanabiliyor fakat erisimi engellemek gibi birsey yok sadece gormesini engelliyoruz. class Sinif: def __init__(self): self._protected_degisken = "a" self.__private_degisken = "b" ornek = Sinif() dir(ornek) dedigimiz zaman listede bunlar yer alacaktir. Private'lar cift cizgi ile baslar, Protected'lar tek cizgi ile baslar. ornek.__privete_degisken dedigimiz zaman kullaniciya kulandirtmayacaktir. print "deneme" dedigimiz zaman icerisi eger nesne ise str metodunu cagirir. class Sinif: def __init__(self): self.deneme = "deneme" def __str__(self): return "sinif : \n degiskenler : %s" % deneme ornek = Sinif() print ornek dedigimi zaman Sinif: degiskenler : <function deneme at 0x1e6758> gibi bir deger gozukecektir. __ne__ __gt__ gibi siniflarda ozellikler kullanabiliyoruz. - Inheritance kullanimi; pythonda coklu inheritance kullanilmaktadir. javada yoktur, c#da vardir. class Istisna(Exception, Sinif1, Sinif2): class Istisna(Exception): def __init__(self,e): self.degisken = "55" print e raise Istisna() seklinde cagiriyoruz. File ve main metodlari seklinde karsimiza listeliyor sinfiin ozelliklerini try: raise Istisna("Deneme") except Istisna: print "a" for i in range(5): print i seklinde yazdirilmalar vardi peki siniflarda bu nasil olacak for i in nesne.veriler(): class Sinif(): def __init__(self,index): #yapiciya parametre ekleyebiliyoruz. self.index = index def __iter__(self): #iterasyon nesnesini cagiriyoruz iter ile. return self def next(self): #for un icerisinde ne dondurulecegini gosteriyor. if self.index == 0: raise StopIteration #istisna olusturup firlatiyoruz. self.index = self.index - 1 return self.index**2 ornek = Sinir(20) for sayi in ornek: print sayi class Sinif(): def __init__(self,index): self.index = index def __iter__(self): return self def next(self): if self.index == 0: raise StopIteration self.index = self.index - 1 return self.index**2 ornek = Sinir(20) for sayi in ornek: print sayi Ekran ciktisi ; 361 324 289 256 225 196 169 144 121 100 81 64 49 36 25 16 9 4 1 0 iter(Sinif(20)) seklindede kulllanilabiliyor ama next genelde for icin kullaniliyor. Bu ogrendiklerimizle bir rehber uygulamasi yapabiliriz... Keyifli Calismalar Dilerim...
Comments