際際滷

際際滷Share a Scribd company logo
PYTHON
G聴R聴
Python ilk olarak 1990lar脹n ba脹nda Guido van Rossum
taraf脹ndan ABC adl脹 bir dilin devam脹 olarak gelitirilmeye
balanm脹t脹r. 聴lk olarak CWI b端nyesinde gelitirilen
Python daha sonra s脹ras脹yla CNRI ve BeOpen Labs.
b端nyesinde gelitirilmitir. G端n端m端zde ise
gelitirilmesine Python Software Foundation taraf脹ndan
devam edilmektedir. 1.6.1 s端r端m端nden beri GPL uyumlu
bir lisans olan Python Lisans脹 alt脹nda da脹t脹lmaktad脹r
NEDEN PYTHON?
Pyhton'un Genel zellikleri:
1- Nesneye Y旦nelik Bir Dildir

   Python'da herey bir nesnedir Fonksiyonlar, Deikenler, Sabitler,
   S脹n脹flar ve Mod端ller birer nesnedir. En basit bir karakter sabiti bile
   nesnedir
2- zg端rd端r

  Python kaynak kodu a巽脹k, 旦zg端r bir dildir Kayna脹 C ile yaz脹lm脹t脹r Eer
  C biliyorsan脹z kendinize has bir python yorumlay脹c脹s脹 yazabilir ve bu
  yeni yorumlay脹c脹y脹 da脹tabilirsiniz
3- Yorumlamal脹 / Derlemeli
Python'da yazd脹脹n脹z kodlar yorumlay脹c脹 taraf脹ndan 旦nce ara koda
(byte-code) 巽evrilir Daha sonra yine yorumlay脹c脹 taraf脹ndan
yorumlanarak 巽al脹t脹r脹l脹r Ara Koda 巽evirme ii olduk巽a h脹zl脹d脹r Ve eer
kodda bir deiiklik yap脹lmad脹ysa tekrar ara koda 巽evirmek yerine
dorudan daha 旦nceki ara koddan yorumlan脹r B旦ylece ara koda
巽evirme ilemi atlanarak 巽al脹t脹rma ilemine h脹zla ge巽ilir Hatta
program脹n脹z脹 bir baka yerde 巽al脹t脹rmak i巽in kaynak kod yerine direkt
olarak ara kodu g旦t端rebilirsiniz Ancak unu da belirtmek gerekir Ara
kodu 巽al脹t脹rmak i巽in yine de python yorumlay脹c脹s脹n脹n kurulu olmas脹
gerekir
Net platformuna 旦zg端 Python derleyicileri mevcut Bu derleyiciler
sayesinde Python yorumlay脹c脹s脹 olmadan derlenen programlar net
ortam脹nda 巽al脹t脹r脹labilmektedir Bu da ta脹nabilirlik olarak 旦nemlidir
4- Ta脹nabilirlik

Pythonda yaz脹lm脹 bir program脹 Windows, Unix ve T端revleri, MacOs gibi pek
巽ok iletim sisteminde 巽al脹t脹rabilirsiniz Python programlar脹n脹n iletim sistemi
ve donan脹m ba脹ml脹l脹脹 olmad脹脹ndan ta脹nabilirlii olduk巽a y端ksektir Ancak
yine de belli bir iletim sistemine 旦zel mod端l kulland脹脹n脹zda bu ta脹nabilirlik
旦zelliini ortadan kald脹rabilir Eer belli bir platforma 旦zel bir program
yazm脹yorsan脹z o platforma 旦zg端 mod端lleri kullanmamal脹s脹n脹z
5- G端巽l端d端r

Pythonda arad脹脹n脹z hemen hemen her eyi bulabilir, her t端rl端
uygulamay脹 gelitirebilirsiniz Unix taban脹nda C/C++
k端t端phanelerini kullanabilir, g端巽l端 COM destei sayesinde
windowsta Visual C++'脹n g端c端n端 kullanabilirsiniz COM destei ile
windows uygulamalar脹na eriip her istediinizi yapt脹rabilirsiniz

6- H脹zl脹d脹r

Python bir alt benzeri olan Java'ya oranla olduk巽a h脹zl脹d脹r
Pythonda mod端ller ba脹ms脹z olduklar脹ndan istemediiniz Hi巽bir
mod端l haf脹zaya y端klenmez B旦ylelikle hem bellek kullan脹m脹 d端er,
hemde uygulaman脹za daha hakim olursunuz Ayr脹ca tan脹ml脹
nesnelerle iiniz bittiinde haf脹zadan silinecek ve haf脹za gereksiz
yere megul edilmeyecektir
7- Yaz脹m脹 Kolayd脹r

  Kullan脹m脹 ve yaz脹m脹 olduk巽a kolay bir dildir Kod yaz脹m kurallar脹 巽ok
  s脹k脹 olduundan sizi d端zenli kod yazmaya itecektir Bu da bug端n
  yazd脹脹n脹z bir kodu 5 y脹l sonra bile rahat巽a anlayabilmenize olanak
  tan脹r Ayr脹ca pek 巽ok dile g旦re ayn脹 ii daha az kod yazarak
  yapabilirsiniz
8- Kullan脹m Alan脹

Pythonu Veritaban脹 programc脹l脹脹 ve Internet programc脹l脹脹nda
kullanabilirsiniz Yani Pythonla hem ticari uygulamalar gelitirebilir hem de
dinamik internet sayfalar脹 haz脹rlayabilirsiniz
Python programlama dili son d旦nemlerde olduk巽a pop端lerlik kazand脹
rnein Pardus Linux iletim sisteminin 巽ok b端y端k bir destei mevcut Pek
巽ok uygulama Pythonda yaz脹lm脹 durumda Yine ayn脹 ekilde RedHat'脹n
kurulum arabirimi ve dier pek 巽ok program pythonla yaz脹lm脹 durumda
Google, Nasa, Yahoo gibi pek 巽ok firma python kullan脹yor
Yanl脹 anlama
Python kelimesi asl脹nda 巽ou kiinin zannettii gibi "Piton Y脹lan脹" anlam脹na
gelmiyor. "Python ismi Guido Van Rossum'un 巽ok sevdii, "Monty
Python" adl脹 alt脹 kiilik bir 聴ngiliz komedi grubunun "Monty Python's Flying
Circus" adl脹 g旦sterisinden geliyor. Guido Van Rossum Python'u
gelitirmeye 1990 y脹l脹nda balam脹... Yani asl脹nda Python i巽in nispeten yeni
bir dil deneb
GENEL ZELL聴KLER
Python her ne kadar bir script dili olsa da dier scripting dillerinde olan baz脹
旦zellikleri i巽ermez.

Pythonda k端巽端k-b端y端k harf ayr脹m脹 mevcuttur. Bu nedenle foobar, fooBar ve
FooBar birbirinden farkl脹 nesnelerdir.

Pythonda deikenler kullan脹lmadan 旦nce mutlaka ilklendirilmelidir
(initialization). Python yorumlay脹c脹s脹 deikenlere kullan脹ld脹脹 yere g旦re otomatik
bir deer atamayacakt脹r.

仰lklendirilmemi bir deeri kullanmaya kalkt脹脹n脹zda bir NameError ile
kar脹la脹rs脹n脹z. Ancak buna ramen deikenlerin tiplerinin herhangi bir 旦zel yerde
tan脹mlanmas脹 gerekmez, 旦rnein kirkiki=42 yazd脹脹m脹zda kirkiki adl脹 deiken
otomatik olarak integer veri tipine sahip olacakt脹r.

Son olarak Pythonda herey bir nesnedir. Bu nedenle mesela bir deikene
atamadan dorudan kullanaca脹m脹z bir string de bir string deikenle ayn脹
旦zelliklere sahiptir.
KOD YAZMAK 聴聴N
    Python kodlar脹n脹 yazmak i巽in iki se巽eneimiz var. Birincisi kodlar脹m脹z脹
    dorudan Python
    komut sat脹r脹na yazabiliyoruz. Python komut sat脹r脹n脹 a巽mak i巽in ALT+F2
    tular脹na bas脹p
    巽脹kan ekrana "konsole" yazmam脹z, ard脹ndan da konsolda "python"
    komutunu vermemiz
    gerekiyor. Bu ekranda komutlar脹m脹z脹 ">>>" iaretinden hemen sonra
    yazaca脹z.
     聴kinci se巽eneimiz ise bir metin d端zenleyici kullanmakt脹r. Baz脹 ufak
    kodlar脹 denemek i巽in
    komut sat脹r脹 yeterli olsa da hem kodlar脹m脹z脹 kaydetmek hem de b端y端k
    programlarda rahat
    hareket edebilmek i巽in mutlaka bir metin d端zenleyici kullanmam脹z
    gerekiyor. u aamada
    kullan脹m kolayl脹脹 nedeniyle "kwrite" metin d端zenleyici 旦nerilebilir.
    ALT+F2 tular脹na bas脹p "kwrite" yazarak bo bir kwrite belgesi
    a巽abiliriz.
    Python kodlar脹n脹 yazmaya balamadan 旦nce, bo belgenin ilk sat脹r脹na
    #!/usr/bin/env python
    yazmam脹z gerekiyor. Bu sat脹r sayesinde sistemimiz, yazd脹脹m脹z kodlar脹n
    hangi program taraf脹ndan 巽al脹t脹r脹laca脹n脹 anl脹yor.
聴te Pythonca Hello World!:
  print "Hello world!
Yorum Sat脹rlar脹
Pythonda iki tip yorum sat脹r脹 mevcuttur. Tek sat脹rl脹k yorumlar #
karakteri ile balarlar. Birden fazla sat脹ra sahip yorumlar ise 
karakterleri ile balay脹p ayn脹 ekildekapan脹rlar.
KULLANICIYLA 聴LET聴聴M: VER聴 ALI-
      VER聴聴

   Python'da kullan脹c脹dan birtak脹m veriler alabilmek, yani
kullan脹c脹yla iletiime ge巽ebilmek i巽in ikitane fonksiyondan
faydalan脹l脹r. Bunlardan 旦ncelikle ilkine bakal脹m:
1.raw_input() fonksiyonu
#!/usr/bin/env python
# -*- coding: utf-8 -*-
a=raw_input("L端tfen parolan脹z脹 girin:")
print "Teekk端rler!

imdi bu belgeyi "deneme.py" ismiyle kaydediyoruz. Daha
sonra bir konsol ekran脹 a巽脹p,
program脹m脹z脹n kay脹tl脹 olduu dizine ge巽erek u komutla
program脹m脹z脹 巽al脹t脹r脹yoruz:
python deneme.py
imdi raw_input fonksiyonuna bir ara verip, kullan脹c脹dan bilgi almak i巽in
 kullanabileceimiz ikinci fonksiyondan biraz bahsedelim.
2.input() fonksiyonu
T脹pk脹 raw_input fonksiyonunda olduu gibi, bu komutla da kullan脹c脹lardan
baz脹 bilgileri
alabiliyoruz. u basit 旦rnee bir bakal脹m:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
a = input("L端tfen bir say脹 girin:")
b = input("L端tfen baka bir say脹 daha girin:")
print a + b

raw_input() fonksiyonunun, girilen verileri "karakter dizisi" (string) olarak;
input() fonksiyonunun ise "tamsay脹" (integer) olarak alg脹lan脹r.
PYTHON'DA KOULA BALI DURUMLAR
Bu i i巽in kullanaca脹m脹z 端巽 tane ifade var: if..., else: ve elif...

#!/usr/bin/env python
#-*- coding: utf-8 -*-
meyve = raw_input("Bir meyve ad脹 yaz脹n脹z: ")
if meyve = = "elma":
print "elma bir meyvedir"
elif meyve = = "armut":
print "armut bir meyvedir"
else:
print meyve, "bir meyve deildir!"
PYTHON'DA
                DNGLER

1.while d旦ng端s端
#!/usr/bin/env python
#-*- coding: utf-8 -*-
a=0
while a < 100:
   a=a+1
   print a


#!/usr/bin/env python
#-*- coding: utf-8 -*-
soru = raw_input("Arkada脹m sen deli misin?")
while soru != "hay脹r":
      print "delisin sen deli! Kulaklar脹 k端peli!

Dikkat ederseniz burada da ile巽lerimizden birini kulland脹k. Kulland脹脹m脹z
ile巽 "eit deildir anlam脹na gelen "!=" ileci...
2.For d旦ng端s端
#!/usr/bin/env python
#-*- coding: utf-8 -*-
for zombi in range(1, 100):
   print zombi
Ben burada deiken ad脹 olarak zombi kelimesini kulland脹m,siz isterseniz
Osman da kullanabilirsiniz 


#!/usr/bin/env python
#-*- coding: utf-8 -*-
for kelimeler in "linux":
   print kelimeler


G旦rd端端n端z gibi, for d旦ng端s端yle yaln脹zca say脹lar脹 deil, karakter dizilerinin
旦elerini de d旦kebiliyoruz ekrana.
3.range() fonksiyonu
Bu fonksiyon Python'da say脹 aral脹klar脹n脹 belirtmemizi salar. print
  range(100)
komutu 0 ile 100 aras脹ndaki say脹lar脹 yazd脹rmam脹z脹 salar.
Baka bir 旦rnek daha verelim:
  print range(100,200)
komutu 100 ile 200 aras脹ndaki say脹lar脹 d旦ker.
Bir 旦rnek daha:
   print range(1,100,2)
Bu komut ise 1 ile 100 aras脹ndaki say脹lar脹 2'er 2'er atlayarak
   yazd脹rmam脹z脹 salar...
4.len() fonksiyonu
Bu fonksiyon, karakter dizilerinin uzunluunu g旦sterir.

#!/usr/bin/env python
#-*- coding: utf-8 -*-
a = "Afyonkarahisar"
print len(a)


Bu kod, "Afyonkarahisar" karakter dizisi i巽indeki harflerin
say脹s脹n脹 ekrana d旦kecektir.
5.Break ifadesi
break ifadesi program i巽inde bir noktada program脹 sona erdirmek
gerektii zaman kullan脹l脹r.
Aa脹daki 旦rnek break ifadesinin ne ie yarad脹脹n脹 a巽脹k巽a g旦steriyor:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
kullanici_adi = "kullanici"
parola = "sifre"
while True:
  soru1 = raw_input("Kullan脹c脹 ad脹: ")
  soru2 = raw_input("ifre: ")
  if soru1 = = kullanici_adi and soru2 = = parola:
       print "Kullan脹c脹 ad脹 ve ifreniz onayland脹. Programa hogeldiniz!
       break
  else:
       print "Kullan脹c脹 ad脹n脹z veya ifrenizden en az birisi onaylanmad脹.
6.continue ifadesi
   Bu ifade ise d旦ng端 i巽inde bir bloun es ge巽ilip ondan sonraki bloun
巽al脹t脹r脹lmas脹n脹 salar. ok bilindik bir 旦rnek verelim:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
while True:
   s = raw_input("Bir say脹 girin: ")
   if s = = "iptal":
        break
   if len(s) <= 3:
        continue
        print "En fazla 端巽 haneli bir say脹 girebilirsiniz."
PYTHON'DA L聴STELER, DEMETLER, SZLKLER
Listeler
    Python'da herhangi bir liste oluturmak i巽in 旦nce listemize bir ad vermemiz,
    ard脹ndan da k旦eli parantez kullanarak bu listenin 旦elerini belirlememiz
    gerekiyor.
liste = ["Hale", "Jale", "Lale", 12, 23]
Python komut sat脹r脹nda u ifadeyi yaz脹n:
    type("Hale")
Bu komutun 巽脹kt脹s脹:
   <type 'str'>
imdi ayn脹 komutu u ekilde deniyoruz:
   type(123)
Bu komut bize u 巽脹kt脹y脹 verecektir:
    <type 'int'>
imdi komut sat脹r脹nda
     liste
 yazd脹脹m脹zda tan脹mlad脹脹m脹z "liste" adl脹 listenin 旦eleri ekrana yazd脹r脹lacakt脹r.
Tan脹mlad脹脹m脹z bu listenin 旦e say脹s脹n脹 len() fonksiyonu yard脹m脹yla 旦renebiliriz:
     len(liste)
     5
append par巽ac脹脹
   聴lk par巽ac脹脹m脹z "append". Bu kelime T端rk巽e'de "eklemek, ilitirmek
anlam脹na geliyor...Oluturduumuz listeye yeni bir 旦e eklemek i巽in
"append" par巽ac脹脹ndan faydalan脹yoruz:
    liste.append("Mehmet")
"Python, liste i巽indeki 旦eleri s脹ralarken, listenin ilk 旦esini 0'dan balat脹r."
insert par巽ac脹脹
    聴te bu "insert" par巽ac脹脹 yard脹m脹yla listenin herhangi bir noktas脹na 旦e
ekleyebiliyoruz. Bu kelime T端rk巽e'de "yerletirmek, sokmak" anlam脹na
geliyor... insert par巽ac脹脹 yard脹m脹yla listenin 1. s脹ras脹na (Dikkat edin, 0'脹nc脹
s脹raya demiyoruz) "Ahmet"i yerletirebiliriz:
     liste.insert(1, "Ahmet")
Burada parantez i巽indeki ilk say脹, "Ahmet" 旦esinin liste i巽inde yerletirile-
cei s脹ray脹 g旦sterir. Bu komutun 巽脹kt脹s脹 旦yle olur:
["Hale", "Ahmet", "Jale", "Lale", 12, 23, "Mehmet"]
extend par巽ac脹脹
yeni_liste = ["Simovic", "Prekazi", "Jardel", "Nouma"]
    liste.extend(yeni_liste)
Bu komutun 巽脹kt脹s脹 旦yle olacakt脹r:
['Veli', 'Hale', 'Ahmet', 'Jale', 'Lale', 12, 23, 'Mehmet', 'Simovic', 'Prekazi', 'Jardel',
   'Nouma']
remove par巽ac脹脹
liste.remove("Nouma")
listeden nouma silinir.
pop par巽ac脹脹
     liste.pop()
G旦rd端端n端z gibi, Python bu pop par巽ac脹脹 yard脹m脹yla listenin son
旦esini 巽脹karacak, 端stelik 巽脹kard脹脹 旦eyi ekrana yazd脹racakt脹r. Eer
bu komutu 旦yle verirsek ne olur?
    liste.pop(0)
Bu komut ise listedeki "ilk" yani "0'脹nc脹" 旦eyi 巽脹kar脹r ve 巽脹kard脹脹
旦eyi ekrana yazd脹r脹r.
reverse par巽ac脹脹
Bu par巽ac脹k listedeki 旦elerin s脹ras脹n脹 ters y端z eder. 旦yle ki:
   liste.reverse()
Bu komutu 端st 端ste iki kez verirseniz listeniz ilk haline d旦necektir.
count par巽ac脹脹
Listelerle birlikte kullanabileceimiz baka bir par巽ac脹k da
budur. G旦revi ise liste i巽inde bir 旦enin ka巽 kez ge巽tiini
s旦ylemektir:
   liste.count("Prekazi")
index par巽ac脹脹
Diyelim ki listedeki "Jardel" 旦esinin listenin ka巽脹nc脹 s脹ras脹nda olduunu
merak ediyorsunuz. 聴te bu index par巽ac脹脹 sizin arad脹脹n脹z ey! Bu
par巽ac脹脹 旦yle kullan脹yoruz:
   liste.index("Jardel")
sort par巽ac脹脹
Bazen listemizdeki 旦eleri alfabe s脹ras脹na dizmek isteriz. 聴te y端reimizde
b旦yle bir istek has脹l olduunda kullanaca脹m脹z par巽ac脹脹n ad脹 "sort":
    liste.sort()
Demetler
   Demetler (tuples) listelere benzer. Ama listeler ile aralar脹nda 巽ok temel bir fark
vard脹r. Listeler 端zerinde oynamalar yapabiliriz. Yani 旦e ekleyebilir, 旦e 巽脹karabiliriz.
Demetlerde ise b旦yle bir ey yoktur...
   Demeti u ekilde tan脹ml脹yoruz:
   demet = "Ali", "Veli", 49, 50
G旦rd端端n端z gibi, yapt脹脹m脹z bu i deiken tan脹mlamaya 巽ok benziyor. 聴stersek
   demetin
elerini parantez i巽inde de g旦sterebiliriz.
    demet2 = ("Ali", "Veli", 49, 50)
Peki bo bir demet nas脹l oluturulur? ok basit:
    demet = ()
Peki tek 旦eli bir demet nas脹l oluturulur? O kadar basit deil. Asl脹nda basit ama biraz
tuhaf:
   hede = ("inek",)
Yukar脹da anlatt脹脹m脹z ekilde bir demet oluturma iine "demetleme" (tuple packing)
ad脹 veriliyor. Bunun tersini de yapabiliriz. Buna da "demet a巽ma" deniyor (sequence
unpacking):
nce demetleyelim:
    aile = "Anne", "Baba", "Kardesler"
imdi demeti a巽al脹m:
   a, b, c = aile
Bu ekilde komut sat脹r脹na "a" yazarsak, "Anne" 旦esi; "b" yazarsak "Baba" 旦esi; c
Yazarsak "Kardesler" 旦esi ekrana yazd脹r脹lacakt脹r.
S旦zl端kler
sozluk = {"elma": "meyve", "domates": "sebze", 1: "sayi"}


telefon_defteri = {"Ahmet": "0533 123 45 67",
    "Kezban": "0532 321 54 76", "Feristah": "0533 333 33 33"}


   Burada 旦rnein, "elma" bir "anahtar", "meyve" ise bu anahtar脹n
"deeri"dir. Ayn脹 ekilde "sebze deerinin anahtar脹 "domates"tir.
Dolay脹s脹yla Python'da s旦zl端k; "anahtar" ve "deer" aras脹ndaki ilikiyi
g旦steren bir veri tipidir!
    imdi gelelim bu s旦zl端kleri nas脹l y旦neteceimize... Diyelim ki
s旦zl端端m端ze yeni bir 旦e eklemek istiyoruz:
telefon_defteri["Zekiye"] = "0544 444 01 00
    Eer biz s旦zl端kteki b端t端n 旦eleri silmek istersek u komut kullan脹l脹yor:
telefon_defteri.clear()
FONKS聴YON TANIMLAMA

  Fonksiyonlar脹 tan脹mlarken "def" adl脹 bir par巽ac脹ktan yararlanaca脹z. Bu
  "def" par巽ac脹脹n脹n hemen ard脹ndan ise fonksiyonumuzun ad脹n脹
  belirleme- miz gerekiyor...
  def ilk_fonksiyonumuz():
      print "Ben Python! Monty Python!
  Fonksiyonlarda Parametreler
  Args=demet ve kwargs=s旦zl端k
  def foobar(foo, bar="42", *args, **kwargs):
        ...
  Dikkat etmemiz gereken kural parametrelerin s脹ra脹n脹n 旦nce normal
  parametreler, ard脹ndan 旦ntan脹ml脹 deere sahip parametreler,
  ard脹ndan geri kalan parametreleri toplamak 端zere *args ve **kwargs
  tan脹mlar脹n脹 kullanmakt脹r.
  Pythonun fonksiyon tan脹mlar脹nda i巽erdii en 旦nemli kolayl脹k deiken
  uzunluktaki parametre listeleridir. Bu sayede bir fonksiyonun s脹n脹rs脹z
  say脹da parametre almas脹 salanabildii gibi bir demet, liste veya s旦zl端k
  i巽erisindeki veriler de kolayca bir fonksiyona parametre olarak
  ge巽irilebilir.( args adl脹 bir demet kwargs adl脹 bir s旦zl端kten 旦nce gelir)
Baka bir 旦rnek:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def merhaba(arkadas):
    print "Merhaba", arkadas
 arkadas = "Kezban"
arkadas = "M端cella"
merhaba(arkadas)
Sizce Python burada kimi arkadatan sayacak? Kezban'脹 m脹 yoksa
M端cella'y脹 m脹?
Cevap: M端cella!
Peki bunun nedeni nedir?
Cevap: Python fonksiyonlarda deikenleri okumaya sondan balar...
Yukar脹daki 旦rnekte arkadas =
"M端cella" ifadesinin alt脹na arkadas = "Ahmet" ifadesini eklerseniz,
Python bu kez "Ahmet"i dikkate
alacakt脹r... 端nk端 bu kez en sonda "Ahmet" deeri olmu olacak...
"return" ifadesi
Bu ifadenin ne ie yarad脹脹n脹 anlamak i巽in u 旦rneklere bakal脹m:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
def return_deneme(a,b):
     if a < b:
        return a
    else:
       return b
print return_deneme(34, 45)
G旦rd端端n端z gibi burada "return" ifadesi yaratt脹脹m脹z koulun sonucuna g旦re
ya a deikenini ya da b deikenini "d旦nd端r端yor"; yani bize 巽脹kt脹 olarak
veriyor...
"pass" ifadesi

#!/usr/bin/python
def deneme():
    liste = []
    while True:
    a = raw_input("Giriniz: ")
    if a = = "0":
       pass
    else:
       liste.append(a)
     print liste
     deneme()
Burada g旦rd端端m端z gibi, eer kullan脹c脹 "0" deerini girerse, bu deer
listeye eklenmeyecek,Python hi巽bir ey yapmadan bu sat脹r脹
    atlayacakt脹r.
Veri Tipleri
1.Boolean deerler
Pythonun geni veri tipi se巽enekleri aras脹nda en yeni olan脹 boolean
  deerlerdir. Python 2.2ye kadar True ve False anahtar kelimeleri
  yoktur. 2.2de ise 0 ve 1 say脹lar脹na denk olarak bu kelimeler
getirildikten sonra sonunda 2.3 s端r端m端 ile Python ger巽ek bir boolean
  tipine kavumutur. Boolean veri tipinin Pythonda bu
kadar ge巽 ortaya 存c脹kmas脹n脹n sebebi Pythonun Cye benzer bir
ekilde her t端rl端 veri tipini doruluk testinde kullanabiliyor olmas脹d脹r.
  rnein bo bir string, bo bir liste veya 0 say脹s脹 yanl脹, 0 d脹脹ndaki
  herhangi bir say脹, boyutu 0dan b端y端k olan herhangi bir liste veya
  string ise doru kabul edilecektir. Bunun d脹脹nda
__nonzero__ adl脹 fonksiyonu kendi s脹n脹f脹m脹z脹n i巽erisinde
tan脹mlayarak kendi yarataca脹m脹z bir s脹n脹f脹 da doruluk testinde
  kullanmak m端mk端nd端r.
2.Say脹sal Tipler
         Pythonda d旦rt temel say脹sal veri tipi bulunmaktad脹r.
  1.integer (Tamsay脹),
  2.long (Uzun tamsay脹),
  3. float (Kayar noktal脹 say脹),
  4. complex (Karma脹k say脹)
        Bu veri tiplerinin tamam脹 iaretli say脹lard脹r. Gerektii
   durumlarda Python yorumlay脹c脹s脹 integer, long ve float tipleri
   aras脹nda otomatik deiimler yapabilmektedir. rnein Python
   yorumlay脹c脹s脹na integer脹n s脹n脹rlar脹n脹 aan bir say脹 verdiiniz takdirde
   yorumlay脹c脹 bunu otomatik olarak long tipine 巽evirecektir. Ayn脹
   ekilde bir ilemin operandlar脹ndan birinin float olmas脹 halinde
   sonu巽 da floata d旦necektir.
3.String Tipleri
Python C printf tarz脹 metin bi存cimlendirme (String
Formatting) karakterlerini destekler. Bu bi巽imlendirme
karakterlerinin tam bir listesine
http://www.python.org/doc/current/lib/typesseq-strings
html adresinden ulaabilirsiniz.
Bu tip metin bi巽imlendirme ilemlerinde Pythonun
getirdii bir kolayl脹k bi巽imlenecek metnin i巽ine koyulacak
deerleri bir liste yerine s旦zl端kten alabilme 旦zelliidir. Bu
sayede bi巽imlendirilecek metnin i巽ine yerletirilecek
   veriler
listedeki s脹ralar脹ndan ba脹ms脹z olarak isimleriyle
   kullan脹labi-
lirler.
SINIF TANIMLAMAK
class IlkSinif:
   mesele = "Olmak ya da olmamak"
rnekleme (Instantiation)
imdi 旦yle bir ey yaz脹yoruz:
>>>deneme = IlkSinif()
Art脹k u komut yard脹m脹yla, s脹n脹f 旦rneimizin niteliklerine ulaabiliriz:
>>>deneme.mesele
B旦ylece oluturduumuz s脹n脹f脹 bir deikene atad脹k. NTP kavramlar脹yla
konuacak olursak, s脹n脹f脹m脹z脹 旦rneklemi olduk.
旦p Toplama (Garbage Collection)
Peki biz bir s脹n脹f脹 旦rneklemezsek ne olur? Eer bir s脹n脹f脹 旦rneklemezsek, o
旦rneklenmeyen s脹n脹f program taraf脹ndan otomatik olarak "巽旦p toplama
(garbage collection) ad脹 verilen bir s端rece tabi tutulacakt脹r. Burada bu
s端recin ayr脹nt脹lar脹na girmeyeceiz. Ama k脹saca 旦yle anlatabiliriz: Python'da
(ve bir 巽ok programlama dilinde) yazd脹脹m脹z programlar i巽indeki "ie
yaramayan" veriler bellekten silinir. B旦ylece etkili bir haf脹za y旦netimi
uygulanm脹 ve programlar脹n performans脹 art脹r脹lm脹 olur.
__init__ Nedir?
#!/usr/bin/env python
#-*- coding:utf8 -*-
class Oyun:
  def __init__(self):
    enerji = 50
    para = 100
    fabrika = 4
    isci = 10
    print "enerji:", enerji
    print "para:", para
    print "fabrika:", fabrika
    print "i巽i:", isci
macera = Oyun()

Pythonda bir program脹n ilk kez 巽al脹t脹r脹ld脹脹 anda ilemesini istediimiz eyleri bu __init__
fonksiyonu i巽ine yaz脹yoruz. Mesela yukar脹daki ufak oyun 巽al脹mas脹nda, oyuna baland脹脹 anda
Bir oyuncunun sahip olaca脹 旦zellikleri __init__ fonksiyonu i巽inde tan脹mlad脹k. Buna g旦re bu
Oyunda bir oyuncu oyuna balad脹脹nda;
    enerjisi 50,
    paras脹 100
    fabrika say脹s脹 4,
    i巽i say脹s脹 ise 10 olacakt脹r.
Self nedir?
class Oyun:
    def __init__(self):
         self.enerji = 50
         self.para = 100
         self.fabrika = 4
          self.isci = 10
    def goster(self):
          print "enerji:", self.enerji
          print "para:", self.para
          print "fabrika:", self.fabrika
          print "i巽i:", self.isci
macera = Oyun()
G旦rd端端n端z gibi, kodlar i巽inde yazd脹脹m脹z deikenlerin, fonksiyon d脹脹ndan da
巽ar脹labilmesi i巽in, yani bir bak脹ma "global" bir nitelik kazanmas脹 i巽in self olarak
tan脹mlanmalar脹 gerekiyor. Yani mesela, enerji yerine self.enerji diyerek, bu
enerji adl脹 deikenin yaln脹zca i巽inde bulunduu fonksiyonda deil, o
fonksiyonun d脹脹nda da kullan脹labilmesini sal脹yoruz. 聴yice somutlat脹rmak
gerekirse, __init__ fonksiyonu i巽inde tan脹mlad脹脹m脹z enerji adl脹 deiken, bu
haliyle goster adl脹 fonksiyonun i巽inde kullan脹lamaz. Daha da 旦nemlisi bu kodlar脹
bu haliyle tam olarak 巽al脹t脹ramay脹z da.


Mesela u temel komutlar脹 iletemeyiz:
   macera.enerji
   macera.para
   macera.isci
   macera.fabrika
M聴RAS ALMA
                  (INHER聴TANCE)


class Dusman(Oyun):
B旦ylelikle daha en bata tan脹mlad脹脹m脹z Oyun adl脹 s脹n脹f脹, bu
yeni oluturduumuz s脹n脹fa miras verdik. Dusman s脹n脹f脹n脹n
durumunu Pythoncada 旦yle ifade Dusman s脹n脹f脹 Oyun
s脹n脹f脹n脹 miras ald脹 (Dusman inherits from Oyun)
class Dusman(Oyun):
   def __init__(self):
      Oyun.__init__(self)
      self.ego = 0
   def goster(self):
      Oyun.goster(self)
      print "ego:", self.ego
Eski ve Yeni S脹n脹flar
imdiye kadar verdiimiz s脹n脹f 旦rneklerinde 旦nemli bir konudan
hi巽 bahsetmedik. Python'da iki tip
s脹n脹f vard脹r: Eski tip s脹n脹flar ve yeni tip s脹n脹flar. Ancak
korkman脹z脹 gerektirecek kadar fark yoktur bu
iki s脹n脹f tipi aras脹nda. Ayr脹ca hangi s脹n脹f tipini kullan脹rsan脹z
kullan脹n sorun yaamazs脹n脹z. Ama tabii
ki kendimizi yeni tipe al脹t脹rmakta fayda var, 巽端nk端 muhtemelen
Python'un sonraki s端r端mlerinden
birinde (b端y端k ihtimalle Python 3.0'da) eski tip s脹n脹flar
kullan脹mdan kald脹r脹lacakt脹r.
Eski tip s脹n脹flar ile yeni tip s脹n脹flar aras脹ndaki en b端y端k fark udur:
Eski tip s脹n脹flar 旦yle tan脹mlan脹r:
class Deneme:
Yeni tip s脹n脹flar ise 旦yle tan脹mlan脹r:
class Deneme(object)
G旦rd端端n端z gibi, eski tip s脹n脹flarda baka bir s脹n脹f脹 miras alma zorunluluu
yoktur. O y端zden s脹n脹flar脹 istersek parantezsiz olarak tan脹mlayabiliyoruz.
Yeni tip s脹n脹flarda ise her s脹n脹f mutlaka baka bir s脹n脹f脹 miras almal脹d脹r. Eer
kodlar脹n脹z i巽inde ger巽ekten miras alman脹z gereken baka bir s脹n脹f yoksa,
旦ntan脹ml脹 olarak "object" adl脹 s脹n脹f脹 miras alman脹z gerekiyor. Dolay脹s脹yla
politikam脹z u olacak:
"Ya bir s脹n脹f脹 miras al, ya da miras alman gereken herhangi bir s脹n脹f
yoksa, "object" adl脹 s脹n脹f脹 miras al..."
KAYNAKLA
R

  [1] Python D旦k端mantasyonu (http://www.python.org/doc/current/
  [2] Python K脹lavuzu (
  http://www.geocities.com/dinceraydin/python/tut/tut.html)
  [3] Dive Into Python (http://www.diveintopyhton.org)
  [4] Python Style Guide (http://www.python.org/doc/essays/styleguide.html)
  [5] Python, Mustafa Baer, 2002

More Related Content

What's hot (20)

git KT .pptx
git KT .pptxgit KT .pptx
git KT .pptx
sumit583388
Python Programming - XIII. GUI Programming
Python Programming - XIII. GUI ProgrammingPython Programming - XIII. GUI Programming
Python Programming - XIII. GUI Programming
Ranel Padon
Python
PythonPython
Python
Gagandeep Nanda
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
Yi-Fan Chu
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Python Functions Tutorial | Working With Functions In Python | Python Trainin...Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Edureka!
Python
PythonPython
Python
Aashish Jain
tmux
tmuxtmux
tmux
Jason Lotito
Fundamentals of python
Fundamentals of pythonFundamentals of python
Fundamentals of python
BijuAugustian
PART 1 - Python Tutorial | Variables and Data Types in Python
PART 1 - Python Tutorial | Variables and Data Types in PythonPART 1 - Python Tutorial | Variables and Data Types in Python
PART 1 - Python Tutorial | Variables and Data Types in Python
Shivam Mitra
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Victor Rentea
Linux history & features
Linux history & featuresLinux history & features
Linux history & features
Rohit Kumar
Introduction to python
 Introduction to python Introduction to python
Introduction to python
Learnbay Datascience
Semantic Versioning
Semantic VersioningSemantic Versioning
Semantic Versioning
Christian Baranowski
Version control
Version controlVersion control
Version control
visual28
Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)
Paige Bailey
PYthon
PYthonPYthon
PYthon
Rajesh Tiwary
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
Ahmed Salama
Introduction about Python by JanBask Training
Introduction about Python by JanBask TrainingIntroduction about Python by JanBask Training
Introduction about Python by JanBask Training
JanBask Training
Basics of-linux
Basics of-linuxBasics of-linux
Basics of-linux
Singsys Pte Ltd
SystemV vs systemd
SystemV vs systemdSystemV vs systemd
SystemV vs systemd
All Things Open
Python Programming - XIII. GUI Programming
Python Programming - XIII. GUI ProgrammingPython Programming - XIII. GUI Programming
Python Programming - XIII. GUI Programming
Ranel Padon
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
Yi-Fan Chu
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Python Functions Tutorial | Working With Functions In Python | Python Trainin...Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Python Functions Tutorial | Working With Functions In Python | Python Trainin...
Edureka!
Fundamentals of python
Fundamentals of pythonFundamentals of python
Fundamentals of python
BijuAugustian
PART 1 - Python Tutorial | Variables and Data Types in Python
PART 1 - Python Tutorial | Variables and Data Types in PythonPART 1 - Python Tutorial | Variables and Data Types in Python
PART 1 - Python Tutorial | Variables and Data Types in Python
Shivam Mitra
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Evolving a Clean, Pragmatic Architecture at JBCNConf 2019
Victor Rentea
Linux history & features
Linux history & featuresLinux history & features
Linux history & features
Rohit Kumar
Version control
Version controlVersion control
Version control
visual28
Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)Python 101: Python for Absolute Beginners (PyTexas 2014)
Python 101: Python for Absolute Beginners (PyTexas 2014)
Paige Bailey
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
Ahmed Salama
Introduction about Python by JanBask Training
Introduction about Python by JanBask TrainingIntroduction about Python by JanBask Training
Introduction about Python by JanBask Training
JanBask Training

Similar to Phyton Programlama Dili (20)

Python Programlama Dilleri Ders Notlari.pdf
Python Programlama Dilleri Ders Notlari.pdfPython Programlama Dilleri Ders Notlari.pdf
Python Programlama Dilleri Ders Notlari.pdf
ZaferBilge2
Python Programlama Diline Giri - G端ncelleme 2018
Python Programlama Diline Giri - G端ncelleme 2018Python Programlama Diline Giri - G端ncelleme 2018
Python Programlama Diline Giri - G端ncelleme 2018
Murat KARA
INFTEC-2024 Python Programlama Giri Kursu
INFTEC-2024 Python Programlama Giri KursuINFTEC-2024 Python Programlama Giri Kursu
INFTEC-2024 Python Programlama Giri Kursu
Murat KARA
Python Programlama Diline Giri G端ncelleme 2024
Python Programlama Diline Giri G端ncelleme 2024Python Programlama Diline Giri G端ncelleme 2024
Python Programlama Diline Giri G端ncelleme 2024
Murat KARA
Kabuk / bash proglama
Kabuk / bash  proglamaKabuk / bash  proglama
Kabuk / bash proglama
Cyber-Warrior.org
ARM Mimarisinde Exploit Gelitirme
ARM Mimarisinde Exploit GelitirmeARM Mimarisinde Exploit Gelitirme
ARM Mimarisinde Exploit Gelitirme
SignalSEC Ltd.
ENF101 slide about programming with examples
ENF101 slide about programming with examplesENF101 slide about programming with examples
ENF101 slide about programming with examples
afturk514
Python dokumani
Python dokumaniPython dokumani
Python dokumani
sersld98
Python
PythonPython
Python
GlcEbru_
Python kitabi
Python kitabiPython kitabi
Python kitabi
sersld98
Python seminerleri
Python seminerleriPython seminerleri
Python seminerleri
sersld98
Python kitaplari
Python kitaplariPython kitaplari
Python kitaplari
sersld98
Python kursu-esenler
Python kursu-esenlerPython kursu-esenler
Python kursu-esenler
sersld93
Python kursu-avcilar
Python kursu-avcilarPython kursu-avcilar
Python kursu-avcilar
sersld93
52657308 unix-linux
52657308 unix-linux52657308 unix-linux
52657308 unix-linux
Ahmet Sag
Python kursu-eyup
Python kursu-eyupPython kursu-eyup
Python kursu-eyup
sersld93
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu KurulumuLinux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
Ahmet G端rel
Python ornek
Python ornekPython ornek
Python ornek
sersld98
Golang Book - Go Programlama Dili Temelleri
Golang Book - Go Programlama Dili TemelleriGolang Book - Go Programlama Dili Temelleri
Golang Book - Go Programlama Dili Temelleri
Cihan zhan
Python Programlama Dilleri Ders Notlari.pdf
Python Programlama Dilleri Ders Notlari.pdfPython Programlama Dilleri Ders Notlari.pdf
Python Programlama Dilleri Ders Notlari.pdf
ZaferBilge2
Python Programlama Diline Giri - G端ncelleme 2018
Python Programlama Diline Giri - G端ncelleme 2018Python Programlama Diline Giri - G端ncelleme 2018
Python Programlama Diline Giri - G端ncelleme 2018
Murat KARA
INFTEC-2024 Python Programlama Giri Kursu
INFTEC-2024 Python Programlama Giri KursuINFTEC-2024 Python Programlama Giri Kursu
INFTEC-2024 Python Programlama Giri Kursu
Murat KARA
Python Programlama Diline Giri G端ncelleme 2024
Python Programlama Diline Giri G端ncelleme 2024Python Programlama Diline Giri G端ncelleme 2024
Python Programlama Diline Giri G端ncelleme 2024
Murat KARA
ARM Mimarisinde Exploit Gelitirme
ARM Mimarisinde Exploit GelitirmeARM Mimarisinde Exploit Gelitirme
ARM Mimarisinde Exploit Gelitirme
SignalSEC Ltd.
ENF101 slide about programming with examples
ENF101 slide about programming with examplesENF101 slide about programming with examples
ENF101 slide about programming with examples
afturk514
Python dokumani
Python dokumaniPython dokumani
Python dokumani
sersld98
Python kitabi
Python kitabiPython kitabi
Python kitabi
sersld98
Python seminerleri
Python seminerleriPython seminerleri
Python seminerleri
sersld98
Python kitaplari
Python kitaplariPython kitaplari
Python kitaplari
sersld98
Python kursu-esenler
Python kursu-esenlerPython kursu-esenler
Python kursu-esenler
sersld93
Python kursu-avcilar
Python kursu-avcilarPython kursu-avcilar
Python kursu-avcilar
sersld93
52657308 unix-linux
52657308 unix-linux52657308 unix-linux
52657308 unix-linux
Ahmet Sag
Python kursu-eyup
Python kursu-eyupPython kursu-eyup
Python kursu-eyup
sersld93
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu KurulumuLinux'a Giris ve VirtualBox a Ubuntu Kurulumu
Linux'a Giris ve VirtualBox a Ubuntu Kurulumu
Ahmet G端rel
Python ornek
Python ornekPython ornek
Python ornek
sersld98
Golang Book - Go Programlama Dili Temelleri
Golang Book - Go Programlama Dili TemelleriGolang Book - Go Programlama Dili Temelleri
Golang Book - Go Programlama Dili Temelleri
Cihan zhan

More from Cumhuriyet niversitesi (8)

Gereksinim Analizi Dok端man脹 Haz脹rlama
Gereksinim Analizi Dok端man脹 Haz脹rlamaGereksinim Analizi Dok端man脹 Haz脹rlama
Gereksinim Analizi Dok端man脹 Haz脹rlama
Cumhuriyet niversitesi
Pascal
Pascal Pascal
Pascal
Cumhuriyet niversitesi
ALGOL ailesi programlama dilleri
ALGOL ailesi programlama dilleriALGOL ailesi programlama dilleri
ALGOL ailesi programlama dilleri
Cumhuriyet niversitesi
Prolog
PrologProlog
Prolog
Cumhuriyet niversitesi
Teknik Rapor Nas脹l Yaz脹l脹r?
Teknik Rapor Nas脹l Yaz脹l脹r?Teknik Rapor Nas脹l Yaz脹l脹r?
Teknik Rapor Nas脹l Yaz脹l脹r?
Cumhuriyet niversitesi
Veri madencilii ve ids
Veri madencilii ve idsVeri madencilii ve ids
Veri madencilii ve ids
Cumhuriyet niversitesi
閣艶姻庄岳温恢温稼鉛温姻脹
閣艶姻庄岳温恢温稼鉛温姻脹閣艶姻庄岳温恢温稼鉛温姻脹
閣艶姻庄岳温恢温稼鉛温姻脹
Cumhuriyet niversitesi
Delphi 7
Delphi 7Delphi 7
Delphi 7
Cumhuriyet niversitesi

Phyton Programlama Dili

  • 2. G聴R聴 Python ilk olarak 1990lar脹n ba脹nda Guido van Rossum taraf脹ndan ABC adl脹 bir dilin devam脹 olarak gelitirilmeye balanm脹t脹r. 聴lk olarak CWI b端nyesinde gelitirilen Python daha sonra s脹ras脹yla CNRI ve BeOpen Labs. b端nyesinde gelitirilmitir. G端n端m端zde ise gelitirilmesine Python Software Foundation taraf脹ndan devam edilmektedir. 1.6.1 s端r端m端nden beri GPL uyumlu bir lisans olan Python Lisans脹 alt脹nda da脹t脹lmaktad脹r
  • 3. NEDEN PYTHON? Pyhton'un Genel zellikleri: 1- Nesneye Y旦nelik Bir Dildir Python'da herey bir nesnedir Fonksiyonlar, Deikenler, Sabitler, S脹n脹flar ve Mod端ller birer nesnedir. En basit bir karakter sabiti bile nesnedir 2- zg端rd端r Python kaynak kodu a巽脹k, 旦zg端r bir dildir Kayna脹 C ile yaz脹lm脹t脹r Eer C biliyorsan脹z kendinize has bir python yorumlay脹c脹s脹 yazabilir ve bu yeni yorumlay脹c脹y脹 da脹tabilirsiniz
  • 4. 3- Yorumlamal脹 / Derlemeli Python'da yazd脹脹n脹z kodlar yorumlay脹c脹 taraf脹ndan 旦nce ara koda (byte-code) 巽evrilir Daha sonra yine yorumlay脹c脹 taraf脹ndan yorumlanarak 巽al脹t脹r脹l脹r Ara Koda 巽evirme ii olduk巽a h脹zl脹d脹r Ve eer kodda bir deiiklik yap脹lmad脹ysa tekrar ara koda 巽evirmek yerine dorudan daha 旦nceki ara koddan yorumlan脹r B旦ylece ara koda 巽evirme ilemi atlanarak 巽al脹t脹rma ilemine h脹zla ge巽ilir Hatta program脹n脹z脹 bir baka yerde 巽al脹t脹rmak i巽in kaynak kod yerine direkt olarak ara kodu g旦t端rebilirsiniz Ancak unu da belirtmek gerekir Ara kodu 巽al脹t脹rmak i巽in yine de python yorumlay脹c脹s脹n脹n kurulu olmas脹 gerekir Net platformuna 旦zg端 Python derleyicileri mevcut Bu derleyiciler sayesinde Python yorumlay脹c脹s脹 olmadan derlenen programlar net ortam脹nda 巽al脹t脹r脹labilmektedir Bu da ta脹nabilirlik olarak 旦nemlidir
  • 5. 4- Ta脹nabilirlik Pythonda yaz脹lm脹 bir program脹 Windows, Unix ve T端revleri, MacOs gibi pek 巽ok iletim sisteminde 巽al脹t脹rabilirsiniz Python programlar脹n脹n iletim sistemi ve donan脹m ba脹ml脹l脹脹 olmad脹脹ndan ta脹nabilirlii olduk巽a y端ksektir Ancak yine de belli bir iletim sistemine 旦zel mod端l kulland脹脹n脹zda bu ta脹nabilirlik 旦zelliini ortadan kald脹rabilir Eer belli bir platforma 旦zel bir program yazm脹yorsan脹z o platforma 旦zg端 mod端lleri kullanmamal脹s脹n脹z
  • 6. 5- G端巽l端d端r Pythonda arad脹脹n脹z hemen hemen her eyi bulabilir, her t端rl端 uygulamay脹 gelitirebilirsiniz Unix taban脹nda C/C++ k端t端phanelerini kullanabilir, g端巽l端 COM destei sayesinde windowsta Visual C++'脹n g端c端n端 kullanabilirsiniz COM destei ile windows uygulamalar脹na eriip her istediinizi yapt脹rabilirsiniz 6- H脹zl脹d脹r Python bir alt benzeri olan Java'ya oranla olduk巽a h脹zl脹d脹r Pythonda mod端ller ba脹ms脹z olduklar脹ndan istemediiniz Hi巽bir mod端l haf脹zaya y端klenmez B旦ylelikle hem bellek kullan脹m脹 d端er, hemde uygulaman脹za daha hakim olursunuz Ayr脹ca tan脹ml脹 nesnelerle iiniz bittiinde haf脹zadan silinecek ve haf脹za gereksiz yere megul edilmeyecektir
  • 7. 7- Yaz脹m脹 Kolayd脹r Kullan脹m脹 ve yaz脹m脹 olduk巽a kolay bir dildir Kod yaz脹m kurallar脹 巽ok s脹k脹 olduundan sizi d端zenli kod yazmaya itecektir Bu da bug端n yazd脹脹n脹z bir kodu 5 y脹l sonra bile rahat巽a anlayabilmenize olanak tan脹r Ayr脹ca pek 巽ok dile g旦re ayn脹 ii daha az kod yazarak yapabilirsiniz
  • 8. 8- Kullan脹m Alan脹 Pythonu Veritaban脹 programc脹l脹脹 ve Internet programc脹l脹脹nda kullanabilirsiniz Yani Pythonla hem ticari uygulamalar gelitirebilir hem de dinamik internet sayfalar脹 haz脹rlayabilirsiniz Python programlama dili son d旦nemlerde olduk巽a pop端lerlik kazand脹 rnein Pardus Linux iletim sisteminin 巽ok b端y端k bir destei mevcut Pek 巽ok uygulama Pythonda yaz脹lm脹 durumda Yine ayn脹 ekilde RedHat'脹n kurulum arabirimi ve dier pek 巽ok program pythonla yaz脹lm脹 durumda Google, Nasa, Yahoo gibi pek 巽ok firma python kullan脹yor Yanl脹 anlama Python kelimesi asl脹nda 巽ou kiinin zannettii gibi "Piton Y脹lan脹" anlam脹na gelmiyor. "Python ismi Guido Van Rossum'un 巽ok sevdii, "Monty Python" adl脹 alt脹 kiilik bir 聴ngiliz komedi grubunun "Monty Python's Flying Circus" adl脹 g旦sterisinden geliyor. Guido Van Rossum Python'u gelitirmeye 1990 y脹l脹nda balam脹... Yani asl脹nda Python i巽in nispeten yeni bir dil deneb
  • 9. GENEL ZELL聴KLER Python her ne kadar bir script dili olsa da dier scripting dillerinde olan baz脹 旦zellikleri i巽ermez. Pythonda k端巽端k-b端y端k harf ayr脹m脹 mevcuttur. Bu nedenle foobar, fooBar ve FooBar birbirinden farkl脹 nesnelerdir. Pythonda deikenler kullan脹lmadan 旦nce mutlaka ilklendirilmelidir (initialization). Python yorumlay脹c脹s脹 deikenlere kullan脹ld脹脹 yere g旦re otomatik bir deer atamayacakt脹r. 仰lklendirilmemi bir deeri kullanmaya kalkt脹脹n脹zda bir NameError ile kar脹la脹rs脹n脹z. Ancak buna ramen deikenlerin tiplerinin herhangi bir 旦zel yerde tan脹mlanmas脹 gerekmez, 旦rnein kirkiki=42 yazd脹脹m脹zda kirkiki adl脹 deiken otomatik olarak integer veri tipine sahip olacakt脹r. Son olarak Pythonda herey bir nesnedir. Bu nedenle mesela bir deikene atamadan dorudan kullanaca脹m脹z bir string de bir string deikenle ayn脹 旦zelliklere sahiptir.
  • 10. KOD YAZMAK 聴聴N Python kodlar脹n脹 yazmak i巽in iki se巽eneimiz var. Birincisi kodlar脹m脹z脹 dorudan Python komut sat脹r脹na yazabiliyoruz. Python komut sat脹r脹n脹 a巽mak i巽in ALT+F2 tular脹na bas脹p 巽脹kan ekrana "konsole" yazmam脹z, ard脹ndan da konsolda "python" komutunu vermemiz gerekiyor. Bu ekranda komutlar脹m脹z脹 ">>>" iaretinden hemen sonra yazaca脹z. 聴kinci se巽eneimiz ise bir metin d端zenleyici kullanmakt脹r. Baz脹 ufak kodlar脹 denemek i巽in komut sat脹r脹 yeterli olsa da hem kodlar脹m脹z脹 kaydetmek hem de b端y端k programlarda rahat hareket edebilmek i巽in mutlaka bir metin d端zenleyici kullanmam脹z gerekiyor. u aamada kullan脹m kolayl脹脹 nedeniyle "kwrite" metin d端zenleyici 旦nerilebilir. ALT+F2 tular脹na bas脹p "kwrite" yazarak bo bir kwrite belgesi a巽abiliriz. Python kodlar脹n脹 yazmaya balamadan 旦nce, bo belgenin ilk sat脹r脹na #!/usr/bin/env python yazmam脹z gerekiyor. Bu sat脹r sayesinde sistemimiz, yazd脹脹m脹z kodlar脹n hangi program taraf脹ndan 巽al脹t脹r脹laca脹n脹 anl脹yor.
  • 11. 聴te Pythonca Hello World!: print "Hello world! Yorum Sat脹rlar脹 Pythonda iki tip yorum sat脹r脹 mevcuttur. Tek sat脹rl脹k yorumlar # karakteri ile balarlar. Birden fazla sat脹ra sahip yorumlar ise karakterleri ile balay脹p ayn脹 ekildekapan脹rlar.
  • 12. KULLANICIYLA 聴LET聴聴M: VER聴 ALI- VER聴聴 Python'da kullan脹c脹dan birtak脹m veriler alabilmek, yani kullan脹c脹yla iletiime ge巽ebilmek i巽in ikitane fonksiyondan faydalan脹l脹r. Bunlardan 旦ncelikle ilkine bakal脹m: 1.raw_input() fonksiyonu #!/usr/bin/env python # -*- coding: utf-8 -*- a=raw_input("L端tfen parolan脹z脹 girin:") print "Teekk端rler! imdi bu belgeyi "deneme.py" ismiyle kaydediyoruz. Daha sonra bir konsol ekran脹 a巽脹p, program脹m脹z脹n kay脹tl脹 olduu dizine ge巽erek u komutla program脹m脹z脹 巽al脹t脹r脹yoruz: python deneme.py
  • 13. imdi raw_input fonksiyonuna bir ara verip, kullan脹c脹dan bilgi almak i巽in kullanabileceimiz ikinci fonksiyondan biraz bahsedelim. 2.input() fonksiyonu T脹pk脹 raw_input fonksiyonunda olduu gibi, bu komutla da kullan脹c脹lardan baz脹 bilgileri alabiliyoruz. u basit 旦rnee bir bakal脹m: #!/usr/bin/env python # -*- coding: utf-8 -*- a = input("L端tfen bir say脹 girin:") b = input("L端tfen baka bir say脹 daha girin:") print a + b raw_input() fonksiyonunun, girilen verileri "karakter dizisi" (string) olarak; input() fonksiyonunun ise "tamsay脹" (integer) olarak alg脹lan脹r.
  • 14. PYTHON'DA KOULA BALI DURUMLAR Bu i i巽in kullanaca脹m脹z 端巽 tane ifade var: if..., else: ve elif... #!/usr/bin/env python #-*- coding: utf-8 -*- meyve = raw_input("Bir meyve ad脹 yaz脹n脹z: ") if meyve = = "elma": print "elma bir meyvedir" elif meyve = = "armut": print "armut bir meyvedir" else: print meyve, "bir meyve deildir!"
  • 15. PYTHON'DA DNGLER 1.while d旦ng端s端 #!/usr/bin/env python #-*- coding: utf-8 -*- a=0 while a < 100: a=a+1 print a #!/usr/bin/env python #-*- coding: utf-8 -*- soru = raw_input("Arkada脹m sen deli misin?") while soru != "hay脹r": print "delisin sen deli! Kulaklar脹 k端peli! Dikkat ederseniz burada da ile巽lerimizden birini kulland脹k. Kulland脹脹m脹z ile巽 "eit deildir anlam脹na gelen "!=" ileci...
  • 16. 2.For d旦ng端s端 #!/usr/bin/env python #-*- coding: utf-8 -*- for zombi in range(1, 100): print zombi Ben burada deiken ad脹 olarak zombi kelimesini kulland脹m,siz isterseniz Osman da kullanabilirsiniz #!/usr/bin/env python #-*- coding: utf-8 -*- for kelimeler in "linux": print kelimeler G旦rd端端n端z gibi, for d旦ng端s端yle yaln脹zca say脹lar脹 deil, karakter dizilerinin 旦elerini de d旦kebiliyoruz ekrana.
  • 17. 3.range() fonksiyonu Bu fonksiyon Python'da say脹 aral脹klar脹n脹 belirtmemizi salar. print range(100) komutu 0 ile 100 aras脹ndaki say脹lar脹 yazd脹rmam脹z脹 salar. Baka bir 旦rnek daha verelim: print range(100,200) komutu 100 ile 200 aras脹ndaki say脹lar脹 d旦ker. Bir 旦rnek daha: print range(1,100,2) Bu komut ise 1 ile 100 aras脹ndaki say脹lar脹 2'er 2'er atlayarak yazd脹rmam脹z脹 salar...
  • 18. 4.len() fonksiyonu Bu fonksiyon, karakter dizilerinin uzunluunu g旦sterir. #!/usr/bin/env python #-*- coding: utf-8 -*- a = "Afyonkarahisar" print len(a) Bu kod, "Afyonkarahisar" karakter dizisi i巽indeki harflerin say脹s脹n脹 ekrana d旦kecektir.
  • 19. 5.Break ifadesi break ifadesi program i巽inde bir noktada program脹 sona erdirmek gerektii zaman kullan脹l脹r. Aa脹daki 旦rnek break ifadesinin ne ie yarad脹脹n脹 a巽脹k巽a g旦steriyor: #!/usr/bin/env python #-*- coding:utf-8 -*- kullanici_adi = "kullanici" parola = "sifre" while True: soru1 = raw_input("Kullan脹c脹 ad脹: ") soru2 = raw_input("ifre: ") if soru1 = = kullanici_adi and soru2 = = parola: print "Kullan脹c脹 ad脹 ve ifreniz onayland脹. Programa hogeldiniz! break else: print "Kullan脹c脹 ad脹n脹z veya ifrenizden en az birisi onaylanmad脹.
  • 20. 6.continue ifadesi Bu ifade ise d旦ng端 i巽inde bir bloun es ge巽ilip ondan sonraki bloun 巽al脹t脹r脹lmas脹n脹 salar. ok bilindik bir 旦rnek verelim: #!/usr/bin/env python #-*- coding:utf-8 -*- while True: s = raw_input("Bir say脹 girin: ") if s = = "iptal": break if len(s) <= 3: continue print "En fazla 端巽 haneli bir say脹 girebilirsiniz."
  • 21. PYTHON'DA L聴STELER, DEMETLER, SZLKLER Listeler Python'da herhangi bir liste oluturmak i巽in 旦nce listemize bir ad vermemiz, ard脹ndan da k旦eli parantez kullanarak bu listenin 旦elerini belirlememiz gerekiyor. liste = ["Hale", "Jale", "Lale", 12, 23] Python komut sat脹r脹nda u ifadeyi yaz脹n: type("Hale") Bu komutun 巽脹kt脹s脹: <type 'str'> imdi ayn脹 komutu u ekilde deniyoruz: type(123) Bu komut bize u 巽脹kt脹y脹 verecektir: <type 'int'> imdi komut sat脹r脹nda liste yazd脹脹m脹zda tan脹mlad脹脹m脹z "liste" adl脹 listenin 旦eleri ekrana yazd脹r脹lacakt脹r. Tan脹mlad脹脹m脹z bu listenin 旦e say脹s脹n脹 len() fonksiyonu yard脹m脹yla 旦renebiliriz: len(liste) 5
  • 22. append par巽ac脹脹 聴lk par巽ac脹脹m脹z "append". Bu kelime T端rk巽e'de "eklemek, ilitirmek anlam脹na geliyor...Oluturduumuz listeye yeni bir 旦e eklemek i巽in "append" par巽ac脹脹ndan faydalan脹yoruz: liste.append("Mehmet") "Python, liste i巽indeki 旦eleri s脹ralarken, listenin ilk 旦esini 0'dan balat脹r." insert par巽ac脹脹 聴te bu "insert" par巽ac脹脹 yard脹m脹yla listenin herhangi bir noktas脹na 旦e ekleyebiliyoruz. Bu kelime T端rk巽e'de "yerletirmek, sokmak" anlam脹na geliyor... insert par巽ac脹脹 yard脹m脹yla listenin 1. s脹ras脹na (Dikkat edin, 0'脹nc脹 s脹raya demiyoruz) "Ahmet"i yerletirebiliriz: liste.insert(1, "Ahmet") Burada parantez i巽indeki ilk say脹, "Ahmet" 旦esinin liste i巽inde yerletirile- cei s脹ray脹 g旦sterir. Bu komutun 巽脹kt脹s脹 旦yle olur: ["Hale", "Ahmet", "Jale", "Lale", 12, 23, "Mehmet"]
  • 23. extend par巽ac脹脹 yeni_liste = ["Simovic", "Prekazi", "Jardel", "Nouma"] liste.extend(yeni_liste) Bu komutun 巽脹kt脹s脹 旦yle olacakt脹r: ['Veli', 'Hale', 'Ahmet', 'Jale', 'Lale', 12, 23, 'Mehmet', 'Simovic', 'Prekazi', 'Jardel', 'Nouma'] remove par巽ac脹脹 liste.remove("Nouma") listeden nouma silinir. pop par巽ac脹脹 liste.pop() G旦rd端端n端z gibi, Python bu pop par巽ac脹脹 yard脹m脹yla listenin son 旦esini 巽脹karacak, 端stelik 巽脹kard脹脹 旦eyi ekrana yazd脹racakt脹r. Eer bu komutu 旦yle verirsek ne olur? liste.pop(0) Bu komut ise listedeki "ilk" yani "0'脹nc脹" 旦eyi 巽脹kar脹r ve 巽脹kard脹脹 旦eyi ekrana yazd脹r脹r. reverse par巽ac脹脹 Bu par巽ac脹k listedeki 旦elerin s脹ras脹n脹 ters y端z eder. 旦yle ki: liste.reverse() Bu komutu 端st 端ste iki kez verirseniz listeniz ilk haline d旦necektir.
  • 24. count par巽ac脹脹 Listelerle birlikte kullanabileceimiz baka bir par巽ac脹k da budur. G旦revi ise liste i巽inde bir 旦enin ka巽 kez ge巽tiini s旦ylemektir: liste.count("Prekazi") index par巽ac脹脹 Diyelim ki listedeki "Jardel" 旦esinin listenin ka巽脹nc脹 s脹ras脹nda olduunu merak ediyorsunuz. 聴te bu index par巽ac脹脹 sizin arad脹脹n脹z ey! Bu par巽ac脹脹 旦yle kullan脹yoruz: liste.index("Jardel") sort par巽ac脹脹 Bazen listemizdeki 旦eleri alfabe s脹ras脹na dizmek isteriz. 聴te y端reimizde b旦yle bir istek has脹l olduunda kullanaca脹m脹z par巽ac脹脹n ad脹 "sort": liste.sort()
  • 25. Demetler Demetler (tuples) listelere benzer. Ama listeler ile aralar脹nda 巽ok temel bir fark vard脹r. Listeler 端zerinde oynamalar yapabiliriz. Yani 旦e ekleyebilir, 旦e 巽脹karabiliriz. Demetlerde ise b旦yle bir ey yoktur... Demeti u ekilde tan脹ml脹yoruz: demet = "Ali", "Veli", 49, 50 G旦rd端端n端z gibi, yapt脹脹m脹z bu i deiken tan脹mlamaya 巽ok benziyor. 聴stersek demetin elerini parantez i巽inde de g旦sterebiliriz. demet2 = ("Ali", "Veli", 49, 50) Peki bo bir demet nas脹l oluturulur? ok basit: demet = () Peki tek 旦eli bir demet nas脹l oluturulur? O kadar basit deil. Asl脹nda basit ama biraz tuhaf: hede = ("inek",) Yukar脹da anlatt脹脹m脹z ekilde bir demet oluturma iine "demetleme" (tuple packing) ad脹 veriliyor. Bunun tersini de yapabiliriz. Buna da "demet a巽ma" deniyor (sequence unpacking): nce demetleyelim: aile = "Anne", "Baba", "Kardesler" imdi demeti a巽al脹m: a, b, c = aile Bu ekilde komut sat脹r脹na "a" yazarsak, "Anne" 旦esi; "b" yazarsak "Baba" 旦esi; c Yazarsak "Kardesler" 旦esi ekrana yazd脹r脹lacakt脹r.
  • 26. S旦zl端kler sozluk = {"elma": "meyve", "domates": "sebze", 1: "sayi"} telefon_defteri = {"Ahmet": "0533 123 45 67", "Kezban": "0532 321 54 76", "Feristah": "0533 333 33 33"} Burada 旦rnein, "elma" bir "anahtar", "meyve" ise bu anahtar脹n "deeri"dir. Ayn脹 ekilde "sebze deerinin anahtar脹 "domates"tir. Dolay脹s脹yla Python'da s旦zl端k; "anahtar" ve "deer" aras脹ndaki ilikiyi g旦steren bir veri tipidir! imdi gelelim bu s旦zl端kleri nas脹l y旦neteceimize... Diyelim ki s旦zl端端m端ze yeni bir 旦e eklemek istiyoruz: telefon_defteri["Zekiye"] = "0544 444 01 00 Eer biz s旦zl端kteki b端t端n 旦eleri silmek istersek u komut kullan脹l脹yor: telefon_defteri.clear()
  • 27. FONKS聴YON TANIMLAMA Fonksiyonlar脹 tan脹mlarken "def" adl脹 bir par巽ac脹ktan yararlanaca脹z. Bu "def" par巽ac脹脹n脹n hemen ard脹ndan ise fonksiyonumuzun ad脹n脹 belirleme- miz gerekiyor... def ilk_fonksiyonumuz(): print "Ben Python! Monty Python! Fonksiyonlarda Parametreler Args=demet ve kwargs=s旦zl端k def foobar(foo, bar="42", *args, **kwargs): ... Dikkat etmemiz gereken kural parametrelerin s脹ra脹n脹n 旦nce normal parametreler, ard脹ndan 旦ntan脹ml脹 deere sahip parametreler, ard脹ndan geri kalan parametreleri toplamak 端zere *args ve **kwargs tan脹mlar脹n脹 kullanmakt脹r. Pythonun fonksiyon tan脹mlar脹nda i巽erdii en 旦nemli kolayl脹k deiken uzunluktaki parametre listeleridir. Bu sayede bir fonksiyonun s脹n脹rs脹z say脹da parametre almas脹 salanabildii gibi bir demet, liste veya s旦zl端k i巽erisindeki veriler de kolayca bir fonksiyona parametre olarak ge巽irilebilir.( args adl脹 bir demet kwargs adl脹 bir s旦zl端kten 旦nce gelir)
  • 28. Baka bir 旦rnek: #!/usr/bin/env python #-*- coding:utf-8 -*- def merhaba(arkadas): print "Merhaba", arkadas arkadas = "Kezban" arkadas = "M端cella" merhaba(arkadas) Sizce Python burada kimi arkadatan sayacak? Kezban'脹 m脹 yoksa M端cella'y脹 m脹? Cevap: M端cella! Peki bunun nedeni nedir? Cevap: Python fonksiyonlarda deikenleri okumaya sondan balar... Yukar脹daki 旦rnekte arkadas = "M端cella" ifadesinin alt脹na arkadas = "Ahmet" ifadesini eklerseniz, Python bu kez "Ahmet"i dikkate alacakt脹r... 端nk端 bu kez en sonda "Ahmet" deeri olmu olacak...
  • 29. "return" ifadesi Bu ifadenin ne ie yarad脹脹n脹 anlamak i巽in u 旦rneklere bakal脹m: #!/usr/bin/env python #-*- coding:utf-8 -*- def return_deneme(a,b): if a < b: return a else: return b print return_deneme(34, 45) G旦rd端端n端z gibi burada "return" ifadesi yaratt脹脹m脹z koulun sonucuna g旦re ya a deikenini ya da b deikenini "d旦nd端r端yor"; yani bize 巽脹kt脹 olarak veriyor...
  • 30. "pass" ifadesi #!/usr/bin/python def deneme(): liste = [] while True: a = raw_input("Giriniz: ") if a = = "0": pass else: liste.append(a) print liste deneme() Burada g旦rd端端m端z gibi, eer kullan脹c脹 "0" deerini girerse, bu deer listeye eklenmeyecek,Python hi巽bir ey yapmadan bu sat脹r脹 atlayacakt脹r.
  • 31. Veri Tipleri 1.Boolean deerler Pythonun geni veri tipi se巽enekleri aras脹nda en yeni olan脹 boolean deerlerdir. Python 2.2ye kadar True ve False anahtar kelimeleri yoktur. 2.2de ise 0 ve 1 say脹lar脹na denk olarak bu kelimeler getirildikten sonra sonunda 2.3 s端r端m端 ile Python ger巽ek bir boolean tipine kavumutur. Boolean veri tipinin Pythonda bu kadar ge巽 ortaya 存c脹kmas脹n脹n sebebi Pythonun Cye benzer bir ekilde her t端rl端 veri tipini doruluk testinde kullanabiliyor olmas脹d脹r. rnein bo bir string, bo bir liste veya 0 say脹s脹 yanl脹, 0 d脹脹ndaki herhangi bir say脹, boyutu 0dan b端y端k olan herhangi bir liste veya string ise doru kabul edilecektir. Bunun d脹脹nda __nonzero__ adl脹 fonksiyonu kendi s脹n脹f脹m脹z脹n i巽erisinde tan脹mlayarak kendi yarataca脹m脹z bir s脹n脹f脹 da doruluk testinde kullanmak m端mk端nd端r.
  • 32. 2.Say脹sal Tipler Pythonda d旦rt temel say脹sal veri tipi bulunmaktad脹r. 1.integer (Tamsay脹), 2.long (Uzun tamsay脹), 3. float (Kayar noktal脹 say脹), 4. complex (Karma脹k say脹) Bu veri tiplerinin tamam脹 iaretli say脹lard脹r. Gerektii durumlarda Python yorumlay脹c脹s脹 integer, long ve float tipleri aras脹nda otomatik deiimler yapabilmektedir. rnein Python yorumlay脹c脹s脹na integer脹n s脹n脹rlar脹n脹 aan bir say脹 verdiiniz takdirde yorumlay脹c脹 bunu otomatik olarak long tipine 巽evirecektir. Ayn脹 ekilde bir ilemin operandlar脹ndan birinin float olmas脹 halinde sonu巽 da floata d旦necektir.
  • 33. 3.String Tipleri Python C printf tarz脹 metin bi存cimlendirme (String Formatting) karakterlerini destekler. Bu bi巽imlendirme karakterlerinin tam bir listesine http://www.python.org/doc/current/lib/typesseq-strings html adresinden ulaabilirsiniz. Bu tip metin bi巽imlendirme ilemlerinde Pythonun getirdii bir kolayl脹k bi巽imlenecek metnin i巽ine koyulacak deerleri bir liste yerine s旦zl端kten alabilme 旦zelliidir. Bu sayede bi巽imlendirilecek metnin i巽ine yerletirilecek veriler listedeki s脹ralar脹ndan ba脹ms脹z olarak isimleriyle kullan脹labi- lirler.
  • 34. SINIF TANIMLAMAK class IlkSinif: mesele = "Olmak ya da olmamak" rnekleme (Instantiation) imdi 旦yle bir ey yaz脹yoruz: >>>deneme = IlkSinif() Art脹k u komut yard脹m脹yla, s脹n脹f 旦rneimizin niteliklerine ulaabiliriz: >>>deneme.mesele B旦ylece oluturduumuz s脹n脹f脹 bir deikene atad脹k. NTP kavramlar脹yla konuacak olursak, s脹n脹f脹m脹z脹 旦rneklemi olduk. 旦p Toplama (Garbage Collection) Peki biz bir s脹n脹f脹 旦rneklemezsek ne olur? Eer bir s脹n脹f脹 旦rneklemezsek, o 旦rneklenmeyen s脹n脹f program taraf脹ndan otomatik olarak "巽旦p toplama (garbage collection) ad脹 verilen bir s端rece tabi tutulacakt脹r. Burada bu s端recin ayr脹nt脹lar脹na girmeyeceiz. Ama k脹saca 旦yle anlatabiliriz: Python'da (ve bir 巽ok programlama dilinde) yazd脹脹m脹z programlar i巽indeki "ie yaramayan" veriler bellekten silinir. B旦ylece etkili bir haf脹za y旦netimi uygulanm脹 ve programlar脹n performans脹 art脹r脹lm脹 olur.
  • 35. __init__ Nedir? #!/usr/bin/env python #-*- coding:utf8 -*- class Oyun: def __init__(self): enerji = 50 para = 100 fabrika = 4 isci = 10 print "enerji:", enerji print "para:", para print "fabrika:", fabrika print "i巽i:", isci macera = Oyun() Pythonda bir program脹n ilk kez 巽al脹t脹r脹ld脹脹 anda ilemesini istediimiz eyleri bu __init__ fonksiyonu i巽ine yaz脹yoruz. Mesela yukar脹daki ufak oyun 巽al脹mas脹nda, oyuna baland脹脹 anda Bir oyuncunun sahip olaca脹 旦zellikleri __init__ fonksiyonu i巽inde tan脹mlad脹k. Buna g旦re bu Oyunda bir oyuncu oyuna balad脹脹nda; enerjisi 50, paras脹 100 fabrika say脹s脹 4, i巽i say脹s脹 ise 10 olacakt脹r.
  • 36. Self nedir? class Oyun: def __init__(self): self.enerji = 50 self.para = 100 self.fabrika = 4 self.isci = 10 def goster(self): print "enerji:", self.enerji print "para:", self.para print "fabrika:", self.fabrika print "i巽i:", self.isci macera = Oyun()
  • 37. G旦rd端端n端z gibi, kodlar i巽inde yazd脹脹m脹z deikenlerin, fonksiyon d脹脹ndan da 巽ar脹labilmesi i巽in, yani bir bak脹ma "global" bir nitelik kazanmas脹 i巽in self olarak tan脹mlanmalar脹 gerekiyor. Yani mesela, enerji yerine self.enerji diyerek, bu enerji adl脹 deikenin yaln脹zca i巽inde bulunduu fonksiyonda deil, o fonksiyonun d脹脹nda da kullan脹labilmesini sal脹yoruz. 聴yice somutlat脹rmak gerekirse, __init__ fonksiyonu i巽inde tan脹mlad脹脹m脹z enerji adl脹 deiken, bu haliyle goster adl脹 fonksiyonun i巽inde kullan脹lamaz. Daha da 旦nemlisi bu kodlar脹 bu haliyle tam olarak 巽al脹t脹ramay脹z da. Mesela u temel komutlar脹 iletemeyiz: macera.enerji macera.para macera.isci macera.fabrika
  • 38. M聴RAS ALMA (INHER聴TANCE) class Dusman(Oyun): B旦ylelikle daha en bata tan脹mlad脹脹m脹z Oyun adl脹 s脹n脹f脹, bu yeni oluturduumuz s脹n脹fa miras verdik. Dusman s脹n脹f脹n脹n durumunu Pythoncada 旦yle ifade Dusman s脹n脹f脹 Oyun s脹n脹f脹n脹 miras ald脹 (Dusman inherits from Oyun) class Dusman(Oyun): def __init__(self): Oyun.__init__(self) self.ego = 0 def goster(self): Oyun.goster(self) print "ego:", self.ego
  • 39. Eski ve Yeni S脹n脹flar imdiye kadar verdiimiz s脹n脹f 旦rneklerinde 旦nemli bir konudan hi巽 bahsetmedik. Python'da iki tip s脹n脹f vard脹r: Eski tip s脹n脹flar ve yeni tip s脹n脹flar. Ancak korkman脹z脹 gerektirecek kadar fark yoktur bu iki s脹n脹f tipi aras脹nda. Ayr脹ca hangi s脹n脹f tipini kullan脹rsan脹z kullan脹n sorun yaamazs脹n脹z. Ama tabii ki kendimizi yeni tipe al脹t脹rmakta fayda var, 巽端nk端 muhtemelen Python'un sonraki s端r端mlerinden birinde (b端y端k ihtimalle Python 3.0'da) eski tip s脹n脹flar kullan脹mdan kald脹r脹lacakt脹r.
  • 40. Eski tip s脹n脹flar ile yeni tip s脹n脹flar aras脹ndaki en b端y端k fark udur: Eski tip s脹n脹flar 旦yle tan脹mlan脹r: class Deneme: Yeni tip s脹n脹flar ise 旦yle tan脹mlan脹r: class Deneme(object) G旦rd端端n端z gibi, eski tip s脹n脹flarda baka bir s脹n脹f脹 miras alma zorunluluu yoktur. O y端zden s脹n脹flar脹 istersek parantezsiz olarak tan脹mlayabiliyoruz. Yeni tip s脹n脹flarda ise her s脹n脹f mutlaka baka bir s脹n脹f脹 miras almal脹d脹r. Eer kodlar脹n脹z i巽inde ger巽ekten miras alman脹z gereken baka bir s脹n脹f yoksa, 旦ntan脹ml脹 olarak "object" adl脹 s脹n脹f脹 miras alman脹z gerekiyor. Dolay脹s脹yla politikam脹z u olacak: "Ya bir s脹n脹f脹 miras al, ya da miras alman gereken herhangi bir s脹n脹f yoksa, "object" adl脹 s脹n脹f脹 miras al..."
  • 41. KAYNAKLA R [1] Python D旦k端mantasyonu (http://www.python.org/doc/current/ [2] Python K脹lavuzu ( http://www.geocities.com/dinceraydin/python/tut/tut.html) [3] Dive Into Python (http://www.diveintopyhton.org) [4] Python Style Guide (http://www.python.org/doc/essays/styleguide.html) [5] Python, Mustafa Baer, 2002

Editor's Notes

  • #7: Eg identifier is a token that can have lexemes such a s sum and total Examples of tokens and lexemes on p 106 of statement (on previous page) index = 2 * count + 17;
  • #12: Explain meta symbols used ::= - consists of is the same as | - or Explain the process of derivation starting with the goal symbol of the language The multiple sentential forms are shown on next slide Further examaple on p 109 of text Grammar for a small language
  • #13: in this derivation the leftmost non terminal is replaced - this is called a leftmost derivation the sentential form consisting of only terminals (lexemes) is the generated sentence. Most languages are infinite so cannot generate all sentences Conversely could start with a sentence the apple eats the man and work backward through the derivation to arrive at &lt;sentence&gt; and so have shown that the sentence is legal in the language. Louden p,67 Articles at the beginning of sentence should have capital Such positional properties not easy in context-free grammars
  • #17: Grammars naturally describe the hierarchical syntactic structure of sentences The parse tree is labeled by nonterminals at interior nodes and terminals at leasves All terminals and nonterminals in a derivation are included Every Subtree of a parse tree describes one instance of an abstraction in a grammar statements Not all terminals and nonterminals may be necessary to determine the structure Abstract syntax trees abstract the essential structure of the parse tree