phyton programlama dili

41
PYTHON

Upload: cumhuriyet-ueniversitesi-bilgisayar-muehendisligi-boeluemue

Post on 17-Jun-2015

1.275 views

Category:

Education


9 download

DESCRIPTION

Neslih

TRANSCRIPT

Page 1: Phyton Programlama Dili

PYTHON

Page 2: Phyton Programlama Dili

GİRİŞ

Python ilk olarak 1990’ların başında Guido van Rossum tarafından ABC adlı bir dilin devamı olarak geliştirilmeyebaşlanmıştır. İlk olarak CWI bünyesinde geliştirilen Python daha sonra sırasıyla CNRI ve BeOpen Labs. bünyesinde geliştirilmiştir. Günümüzde ise geliştirilmesine 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

Page 3: Phyton Programlama Dili

NEDEN PYTHON?

Pyhton'un Genel Özellikleri:1- Nesneye Yönelik Bir Dildir

Python'da herşey bir nesnedir Fonksiyonlar, Değişkenler, 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 Eğer C biliyorsanız kendinize has bir python yorumlayıcısı yazabilir ve bu yeni yorumlayıcıyı dağıtabilirsiniz

Page 4: Phyton Programlama Dili

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 işi oldukça hızlıdır Ve eğer kodda bir değişiklik yapılmadıysa tekrar ara koda çevirmek yerine doğrudan daha önceki ara koddan yorumlanır Böylece ara koda çevirme işlemi atlanarak çalıştırma işlemine hızla geçilir Hatta programınızı bir başka 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

Page 5: Phyton Programlama Dili

4- Taşınabilirlik

Pythonda yazılmış bir programı Windows, Unix ve Türevleri, MacOs gibi pek çok işletim sisteminde çalıştırabilirsiniz Python programlarının işletim sistemi ve donanım bağımlılığı olmadığından taşınabilirliği oldukça yüksektir Ancak yine de belli bir işletim sistemine özel modül kullandığınızda bu taşınabilirlik özelliğini ortadan kaldırabilir Eğer belli bir platforma özel bir program yazmıyorsanız o platforma özgü modülleri kullanmamalısınız

Page 6: Phyton Programlama Dili

5- Güçlüdür

Pythonda aradığınız hemen hemen her şeyi bulabilir, her türlü uygulamayı geliştirebilirsiniz Unix tabanında C/C++ kütüphanelerini kullanabilir, güçlü COM desteği sayesinde windowsta Visual C++'ın gücünü kullanabilirsiniz COM desteği ile windows uygulamalarına erişip her istediğinizi 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 istemediğiniz 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 işiniz bittiğinde hafızadan silinecek ve hafıza gereksiz yere meşgul edilmeyecektir

Page 7: Phyton Programlama Dili

7- Yazımı Kolaydır

Kullanımı ve yazımı oldukça kolay bir dildir Kod yazım kuralları çok sıkı olduğundan 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ı işi daha az kod yazarak yapabilirsiniz

Page 8: Phyton Programlama Dili

8- Kullanım Alanı

Pythonu Veritabanı programcılığı ve Internet programcılığında kullanabilirsiniz Yani Pythonla hem ticari uygulamalar geliştirebilir hem de dinamik internet sayfaları hazırlayabilirsinizPython programlama dili son dönemlerde oldukça popülerlik kazandı Örneğin Pardus Linux işletim sisteminin çok büyük bir desteği mevcut Pek çok uygulama Pythonda yazılmış durumda Yine aynı şekilde RedHat'ın kurulum arabirimi ve diğer pek çok program pythonla yazılmış durumda Google, Nasa, Yahoo gibi pek çok firma python kullanıyor

Yanlış anlama

Python kelimesi aslında çoğu kişinin zannettiği gibi "Piton Yılanı" anlamına gelmiyor. "Python“ ismi Guido Van Rossum'un çok sevdiği, "Monty Python" adlı altı kişilik bir İngiliz komedi grubunun "Monty Python's Flying Circus" adlı gösterisinden geliyor. Guido Van Rossum Python'u geliştirmeye 1990 yılında başlamış... Yani aslında Python için nispeten yeni bir dil deneb

Page 9: Phyton Programlama Dili

GENEL ÖZELLİKLER

Python her ne kadar bir script dili olsa da diğer scripting dillerinde olan bazı özellikleri içermez.

Python’da küçük-büyük harf ayrımı mevcuttur. Bu nedenle foobar, fooBar ve FooBar birbirinden farklı nesnelerdir.

Python’da değişkenler kullanılmadan önce mutlaka ilklendirilmelidir (initialization). Python yorumlayıcısı değişkenlere kullanıldığı yere göre otomatik bir değer atamayacaktır.

İlklendirilmemiş bir değeri kullanmaya kalktığınızda bir NameError ile karşılaşırsınız. Ancak buna rağmen değişkenlerin tiplerinin herhangi bir özel yerde tanımlanması gerekmez, örneğin kirkiki=42 yazdığımızda kirkiki adlı değişken otomatik olarak integer veri tipine sahip olacaktır.

Son olarak Python’da herşey bir nesnedir. Bu nedenle mesela bir değişkene atamadan doğrudan kullanacağımız bir string de bir string değişkenle aynı özelliklere sahiptir.

Page 10: Phyton Programlama Dili

Python kodlarını yazmak için iki seçeneğimiz var. Birincisi kodlarımızı doğrudan Pythonkomut satırına yazabiliyoruz. Python komut satırını açmak için ALT+F2 tuşlarına basıpçıkan ekrana "konsole" yazmamız, ardından da konsolda "python" komutunu vermemizgerekiyor. Bu ekranda komutlarımızı ">>>" işaretinden hemen sonra yazacağız. İkinci seçeneğimiz ise bir metin düzenleyici kullanmaktır. Bazı ufak kodları denemek içinkomut satırı yeterli olsa da hem kodlarımızı kaydetmek hem de büyük programlarda rahathareket edebilmek için mutlaka bir metin düzenleyici kullanmamız gerekiyor. Şu aşamadakullanım kolaylığı nedeniyle "kwrite" metin düzenleyici önerilebilir.ALT+F2 tuşlarına basıp "kwrite" yazarak boş bir kwrite belgesi açabiliriz.Python kodlarını yazmaya başlamadan önce, boş belgenin ilk satırına #!/usr/bin/env pythonyazmamız gerekiyor. Bu satır sayesinde sistemimiz, yazdığımız kodların hangi program tarafından çalıştırılacağını anlıyor.

KOD YAZMAK İÇİN

Page 11: Phyton Programlama Dili

İşte Python’ca Hello World!: print "Hello world!“Yorum Satırları

Python’da iki tip yorum satırı mevcuttur. Tek satırlık yorumlar #karakteri ile başlarlar. Birden fazla satıra sahip yorumlar ise ”””karakterleri ile başlayıp aynı şekildekapanırlar.

Page 12: Phyton Programlama Dili

KULLANICIYLA İLETİŞİM: VERİ ALIŞ-VERİŞİ

Python'da kullanıcıdan birtakım veriler alabilmek, yanikullanıcıyla iletişime geçebilmek için ikitane fonksiyondanfaydalanı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 "Teşekkürler!“

Şimdi bu belgeyi "deneme.py" ismiyle kaydediyoruz. Dahasonra bir konsol ekranı açıp,programımızın kayıtlı olduğu dizine geçerek şu komutlaprogramımızı çalıştırıyoruz:python deneme.py

Page 13: Phyton Programlama Dili

Şimdi raw_input fonksiyonuna bir ara verip, kullanıcıdan bilgi almak için kullanabileceğimiz ikinci fonksiyondan biraz bahsedelim.2.input() fonksiyonuTıpkı raw_input fonksiyonunda olduğu gibi, bu komutla da kullanıcılardan bazı bilgilerialabiliyoruz. Şu basit örneğe bir bakalım:

#!/usr/bin/env python# -*- coding: utf-8 -*-a = input("Lütfen bir sayı girin:")b = input("Lütfen başka 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.

Page 14: Phyton Programlama Dili

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 değildir!"

PYTHON'DA KOŞULA BAĞLI DURUMLAR

Page 15: Phyton Programlama Dili

PYTHON'DA DÖNGÜLER

1.while döngüsü #!/usr/bin/env python#-*- coding: utf-8 -*-a=0while 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 işleçlerimizden birini kullandık. Kullandığımız işleç "eşit değildir“ anlamına gelen "!=" işleci...

Page 16: Phyton Programlama Dili

2.For döngüsü#!/usr/bin/env python#-*- coding: utf-8 -*-for zombi in range(1, 100):

print zombiBen burada değişken adı olarak zombi kelimesini kullandım,siz istersenizOsman 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ı değil, karakter dizilerininöğelerini de dökebiliyoruz ekrana.

Page 17: Phyton Programlama Dili

3.range() fonksiyonuBu fonksiyon Python'da sayı aralıklarını belirtmemizi sağlar. print

range(100)komutu 0 ile 100 arasındaki sayıları yazdırmamızı sağlar.

Başka 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ı sağlar...

Page 18: Phyton Programlama Dili

4.len() fonksiyonuBu fonksiyon, karakter dizilerinin uzunluğunu gösterir.

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

Bu kod, "Afyonkarahisar" karakter dizisi içindeki harflerinsayısını ekrana dökecektir.

Page 19: Phyton Programlama Dili

5.Break ifadesibreak ifadesi program içinde bir noktada programı sona erdirmekgerektiği zaman kullanılır.Aşağıdaki örnek break ifadesinin ne işe 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 hoşgeldiniz!“ break else: print "Kullanıcı adınız veya şifrenizden en az birisi onaylanmadı.”

Page 20: Phyton Programlama Dili

6.continue ifadesi Bu ifade ise döngü içinde bir bloğun es geçilip ondan sonraki bloğunçalıştırılmasını sağlar. Ç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."

Page 21: Phyton Programlama Dili

PYTHON'DA LİSTELER, DEMETLER, SÖZLÜKLERListeler Python'da herhangi bir liste oluşturmak 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

Page 22: Phyton Programlama Dili

append parçacığı İlk parçacığımız "append". Bu kelime Türkçe'de "eklemek, iliştirmek“anlamına geliyor...Oluşturduğumuz 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 başlatır."

insert parçacığı İşte bu "insert" parçacığı yardımıyla listenin herhangi bir noktasına öğeekleyebiliyoruz. Bu kelime Türkçe'de "yerleştirmek, sokmak" anlamınageliyor... insert parçacığı yardımıyla listenin 1. sırasına (Dikkat edin, 0'ıncısıraya demiyoruz) "Ahmet"i yerleştirebiliriz: liste.insert(1, "Ahmet")Burada parantez içindeki ilk sayı, "Ahmet" öğesinin liste içinde yerleştirile-ceği sırayı gösterir. Bu komutun çıktısı şöyle olur:["Hale", "Ahmet", "Jale", "Lale", 12, 23, "Mehmet"]

Page 23: Phyton Programlama Dili

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. Eğerbu 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.

Page 24: Phyton Programlama Dili

count parçacığıListelerle birlikte kullanabileceğimiz başka bir parçacık dabudur. Görevi ise liste içinde bir öğenin kaç kez geçtiğinisöylemektir: liste.count("Prekazi")index parçacığıDiyelim ki listedeki "Jardel" öğesinin listenin kaçıncı sırasında olduğunumerak ediyorsunuz. İşte bu index parçacığı sizin aradığınız şey! Buparçacığı şöyle kullanıyoruz: liste.index("Jardel")sort parçacığıBazen listemizdeki öğeleri alfabe sırasına dizmek isteriz. İşte yüreğimizdeböyle bir istek hasıl olduğunda kullanacağımız parçacığın adı "sort": liste.sort()

Page 25: Phyton Programlama Dili

Demetler Demetler (tuples) listelere benzer. Ama listeler ile aralarında çok temel bir farkvardı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, 50Gördüğünüz gibi, yaptığımız bu iş değişken tanımlamaya çok benziyor. İstersek

demetinÖğelerini parantez içinde de gösterebiliriz. demet2 = ("Ali", "Veli", 49, 50)Peki boş bir demet nasıl oluşturulur? Çok basit: demet = ()Peki tek öğeli bir demet nasıl oluşturulur? O kadar basit değil. Aslında basit ama biraztuhaf: hede = ("inek",)Yukarıda anlattığımız şekilde bir demet oluşturma işine "demetleme" (tuple packing)adı veriliyor. Bunun tersini de yapabiliriz. Buna da "demet açma" deniyor (sequenceunpacking):Önce demetleyelim: aile = "Anne", "Baba", "Kardesler"Şimdi demeti açalım: a, b, c = aileBu şekilde komut satırına "a" yazarsak, "Anne" öğesi; "b" yazarsak "Baba" öğesi; cYazarsak "Kardesler" öğesi ekrana yazdırılacaktır.

Page 26: Phyton Programlama Dili

Sözlüklersozluk = {"elma": "meyve", "domates": "sebze", 1: "sayi"}

telefon_defteri = {"Ahmet": "0533 123 45 67", "Kezban": "0532 321 54 76", "Feristah": "0533 333 33 33"} Burada örneğin, "elma" bir "anahtar", "meyve" ise bu anahtarın"değeri"dir. Aynı şekilde "sebze“ değerinin anahtarı "domates"tir.Dolayısıyla Python'da sözlük; "anahtar" ve "değer" arasındaki ilişkiyigösteren bir veri tipidir! Şimdi gelelim bu sözlükleri nasıl yöneteceğimize... Diyelim kisözlüğümüze yeni bir öğe eklemek istiyoruz:telefon_defteri["Zekiye"] = "0544 444 01 00“ Eğer biz sözlükteki bütün öğeleri silmek istersek şu komut kullanılıyor:telefon_defteri.clear()

Page 27: Phyton Programlama Dili

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 ParametrelerArgs=demet ve kwargs=sözlükdef foobar(foo, bar="42", *args, **kwargs): ...Dikkat etmemiz gereken kural parametrelerin sıraının önce normal parametreler, ardından öntanımlı değere sahip parametreler,ardından geri kalan parametreleri toplamak üzere *args ve **kwargs tanımlarını kullanmaktır.Python’un fonksiyon tanımlarında içerdiği en önemli kolaylık değişken uzunluktaki parametre listeleridir. Bu sayede bir fonksiyonun sınırsız sayıda parametre alması sağlanabildiği 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)

FONKSİYON TANIMLAMA

Page 28: Phyton Programlama Dili

Başka 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 arkadaştan sayacak? Kezban'ı mı yoksa Mücella'yı mı?Cevap: Mücella!Peki bunun nedeni nedir?Cevap: Python fonksiyonlarda değişkenleri okumaya sondan başlar... Yukarıdaki örnekte arkadas ="Mücella" ifadesinin altına arkadas = "Ahmet" ifadesini eklerseniz, Python bu kez "Ahmet"i dikkatealacaktır... Çünkü bu kez en sonda "Ahmet" değeri olmuş olacak...

Page 29: Phyton Programlama Dili

"return" ifadesiBu ifadenin ne işe 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 bprint return_deneme(34, 45)Gördüğünüz gibi burada "return" ifadesi yarattığımız koşulun sonucuna göre ya a değişkenini ya da b değişkenini "döndürüyor"; yani bize çıktı olarak veriyor...

Page 30: Phyton Programlama Dili

"pass" ifadesi

#!/usr/bin/pythondef 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, eğer kullanıcı "0" değerini girerse, bu değerlisteye eklenmeyecek,Python hiçbir şey yapmadan bu satırı atlayacaktır.

Page 31: Phyton Programlama Dili

Veri Tipleri1.Boolean değerlerPython’un geniş veri tipi seçenekleri arasında en yeni olanı boolean

değerlerdir. Python 2.2’ye kadar True ve False anahtar kelimeleri yoktur. 2.2’de 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 kavuşmuştur. Boolean veri tipinin Python’da bu

kadar geç ortaya ¸cıkmasının sebebi Python’un C’ye benzer birşekilde her türlü veri tipini doğruluk testinde kullanabiliyor olmasıdır.

Örneğin boş bir string, boş bir liste veya 0 sayısı yanlış, 0 dışındaki herhangi bir sayı, boyutu 0’dan büyük olan herhangi bir liste veya string ise doğru kabul edilecektir. Bunun dışında

__nonzero__ adlı fonksiyonu kendi sınıfımızın içerisindetanımlayarak kendi yaratacağımız bir sınıfı da doğruluk testinde

kullanmak mümkündür.

Page 32: Phyton Programlama Dili

2.Sayısal Tipler Python’da 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ı işaretli sayılardır. Gerektiği

durumlarda Python yorumlayıcısı integer, long ve float tipleri arasında otomatik değişimler yapabilmektedir. Örneğin Python yorumlayıcısına integer’ın sınırlarını aşan bir sayı verdiğiniz takdirde yorumlayıcı bunu otomatik olarak long tipine çevirecektir. Aynı şekilde bir işlemin operandlarından birinin float olması halinde sonuç da float’a dönecektir.

Page 33: Phyton Programlama Dili

3.String Tipleri

Python C printf tarzı metin bi¸cimlendirme (StringFormatting) karakterlerini destekler. Bu biçimlendirmekarakterlerinin tam bir listesinehttp://www.python.org/doc/current/lib/typesseq-strings

html adresinden ulaşabilirsiniz.Bu tip metin biçimlendirme işlemlerinde Python’ungetirdiği bir kolaylık biçimlenecek metnin içine koyulacakdeğerleri bir liste yerine sözlükten alabilme özelliğidir. Busayede biçimlendirilecek metnin içine yerleştirilecek

verilerlistedeki sıralarından bağımsız olarak isimleriyle kullanılabi-lirler.

Page 34: Phyton Programlama Dili

SINIF TANIMLAMAKclass 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 örneğimizin “niteliklerine” ulaşabiliriz:>>>deneme.meseleBöylece oluşturduğumuz sınıfı bir değişkene atadık. NTP kavramlarıylakonuşacak olursak, “sınıfımızı örneklemiş olduk”.Çöp Toplama (Garbage Collection)Peki biz bir sınıfı örneklemezsek ne olur? Eğer 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 busürecin ayrıntılarına girmeyeceğiz. Ama kısaca şöyle anlatabiliriz: Python'da(ve bir çok programlama dilinde) yazdığımız programlar içindeki "işeyaramayan" veriler bellekten silinir. Böylece etkili bir hafıza yönetimiuygulanmış ve programların performansı artırılmış olur.

Page 35: Phyton Programlama Dili

__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:", iscimacera = Oyun()

Python’da bir programın ilk kez çalıştırıldığı anda işlemesini istediğimiz şeyleri bu __init__fonksiyonu içine yazıyoruz. Mesela yukarıdaki ufak oyun çalışmasında, oyuna başlandığı andaBir oyuncunun sahip olacağı özellikleri __init__ fonksiyonu içinde tanımladık. Buna göre buOyunda bir oyuncu oyuna başladığında; enerjisi 50, parası 100 fabrika sayısı 4, işçi sayısı ise 10 olacaktır.

Page 36: Phyton Programlama Dili

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.iscimacera = Oyun()

Page 37: Phyton Programlama Dili

Gördüğünüz gibi, kodlar içinde yazdığımız değişkenlerin, fonksiyon dışından da

çağrı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ı değişkenin yalnızca içinde bulunduğu fonksiyonda değil, o

fonksiyonun dışında da kullanılabilmesini sağlıyoruz. İyice somutlaştırmak

gerekirse, “__init__” fonksiyonu içinde tanımladığımız “enerji” adlı değişken, 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ı işletemeyiz: macera.enerji macera.para macera.isci macera.fabrika

Page 38: Phyton Programlama Dili

MİRAS ALMA (INHERİTANCE)

class Dusman(Oyun):Böylelikle daha en başta tanımladığımız “Oyun” adlı sınıfı, buyeni oluşturduğumuz sınıfa miras verdik. Dusman sınıfınındurumunu Python’cada şöyle ifade “Dusman sınıfı Oyunsı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

Page 39: Phyton Programlama Dili

Eski ve Yeni SınıflarŞimdiye kadar verdiğimiz sınıf örneklerinde önemli bir konudan hiç bahsetmedik. Python'da iki tipsınıf vardır: Eski tip sınıflar ve yeni tip sınıflar. Ancak korkmanızı gerektirecek kadar fark yoktur buiki sınıf tipi arasında. Ayrıca hangi sınıf tipini kullanırsanız kullanın sorun yaşamazsınız. Ama tabiiki kendimizi yeni tipe alıştırmakta fayda var, çünkü muhtemelen Python'un sonraki sürümlerindenbirinde (büyük ihtimalle Python 3.0'da) eski tip sınıflar kullanımdan kaldırılacaktır.

Page 40: Phyton Programlama Dili

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 başka bir sınıfı miras alma zorunluluğu yoktur. O yüzden sınıfları istersek parantezsiz olarak tanımlayabiliyoruz. Yeni tip sınıflarda ise her sınıf mutlaka başka bir sınıfı miras almalıdır. Eğer kodlarınız içinde gerçekten miras almanız gereken başka 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..."

Page 41: Phyton Programlama Dili

KAYNAKLAR

[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 Başer, 2002