Your SlideShare is downloading. ×
0
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Phyton Programlama Dili
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Phyton Programlama Dili

1,160

Published on

Neslih

Neslih

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,160
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
29
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • 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;
  • 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”
  • 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 <sentence> 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
  • 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
  • Transcript

    • 1. PYTHON
    • 2. GİRİŞPython ilk olarak 1990’ların başında Guido van Rossumtarafından ABC adlı bir dilin devamı olarak geliştirilmeyebaşlanmıştır. İlk olarak CWI bünyesinde geliştirilenPython daha sonra sırasıyla CNRI ve BeOpen Labs.bünyesinde geliştirilmiştir. Günümüzde isegeliştirilmesine Python Software Foundation tarafındandevam edilmektedir. 1.6.1 sürümünden beri GPL uyumlubir lisans olan Python Lisansı altında dağıtılmaktadır
    • 3. NEDEN PYTHON?Pyhtonun Genel Özellikleri:1- Nesneye Yönelik Bir Dildir Pythonda herşey bir nesnedir Fonksiyonlar, Değişkenler, Sabitler, Sınıflar ve Modüller birer nesnedir. En basit bir karakter sabiti bile nesnedir2- Ö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
    • 4. 3- Yorumlamalı / DerlemeliPythonda yazdığınız kodlar yorumlayıcı tarafından önce ara koda(byte-code) çevrilir Daha sonra yine yorumlayıcı tarafındanyorumlanarak çalıştırılır Ara Koda çevirme işi oldukça hızlıdır Ve eğerkodda bir değişiklik yapılmadıysa tekrar ara koda çevirmek yerinedoğrudan daha önceki ara koddan yorumlanır Böylece ara kodaçevirme işlemi atlanarak çalıştırma işlemine hızla geçilir Hattaprogramınızı bir başka yerde çalıştırmak için kaynak kod yerine direktolarak ara kodu götürebilirsiniz Ancak şunu da belirtmek gerekir Arakodu çalıştırmak için yine de python yorumlayıcısının kurulu olmasıgerekirNet platformuna özgü Python derleyicileri mevcut Bu derleyicilersayesinde Python yorumlayıcısı olmadan derlenen programlar netortamında çalıştırılabilmektedir Bu da taşınabilirlik olarak önemlidir
    • 5. 4- TaşınabilirlikPythonda 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 sistemive donanım bağımlılığı olmadığından taşınabilirliği oldukça yüksektir Ancakyine 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 programyazmıyorsanız o platforma özgü modülleri kullanmamalısınız
    • 6. 5- GüçlüdürPythonda 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 sayesindewindowsta Visual C++ın gücünü kullanabilirsiniz COM desteği ilewindows uygulamalarına erişip her istediğinizi yaptırabilirsiniz6- HızlıdırPython bir alt benzeri olan Javaya oranla oldukça hızlıdırPythonda modüller bağımsız olduklarından istemediğiniz Hiçbirmodü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 gereksizyere meşgul edilmeyecektir
    • 7. 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
    • 8. 8- Kullanım AlanıPythonu Veritabanı programcılığı ve Internet programcılığındakullanabilirsiniz Yani Pythonla hem ticari uygulamalar geliştirebilir hem dedinamik 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ınkurulum arabirimi ve diğer pek çok program pythonla yazılmış durumdaGoogle, Nasa, Yahoo gibi pek çok firma python kullanıyorYanlış anlamaPython kelimesi aslında çoğu kişinin zannettiği gibi "Piton Yılanı" anlamınagelmiyor. "Python“ ismi Guido Van Rossumun çok sevdiği, "MontyPython" adlı altı kişilik bir İngiliz komedi grubunun "Monty Pythons FlyingCircus" adlı gösterisinden geliyor. Guido Van Rossum Pythonugeliştirmeye 1990 yılında başlamış... Yani aslında Python için nispeten yenibir dil deneb
    • 9. 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 veFooBar 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 otomatikbir değer atamayacaktır.İlklendirilmemiş bir değeri kullanmaya kalktığınızda bir NameError ilekarşılaşırsınız. Ancak buna rağmen değişkenlerin tiplerinin herhangi bir özel yerdetanımlanması gerekmez, örneğin kirkiki=42 yazdığımızda kirkiki adlı değişkenotomatik olarak integer veri tipine sahip olacaktır.Son olarak Python’da herşey bir nesnedir. Bu nedenle mesela bir değişkeneatamadan doğrudan kullanacağımız bir string de bir string değişkenle aynıözelliklere sahiptir.
    • 10. KOD YAZMAK İÇİN Python kodlarını yazmak için iki seçeneğimiz var. Birincisi kodlarımızı doğrudan Python komut 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 vermemiz gerekiyor. 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ç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 aşamada kullanı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 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 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.
    • 12. KULLANICIYLA İLETİŞİM: VERİ ALIŞ- VERİŞİ Pythonda 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
    • 13. Ş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ılardanbazı 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 + braw_input() fonksiyonunun, girilen verileri "karakter dizisi" (string) olarak;input() fonksiyonunun ise "tamsayı" (integer) olarak algılanır.
    • 14. PYTHONDA KOŞULA BAĞLI DURUMLARBu 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!"
    • 15. PYTHONDA DÖNGÜLER1.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ızişleç "eşit değildir“ anlamına gelen "!=" işleci...
    • 16. 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 kelimelerGördüğünüz gibi, for döngüsüyle yalnızca sayıları değil, karakter dizilerininöğelerini de dökebiliyoruz ekrana.
    • 17. 3.range() fonksiyonuBu fonksiyon Pythonda 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...
    • 18. 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.
    • 19. 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ı.”
    • 20. 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."
    • 21. PYTHONDA LİSTELER, DEMETLER, SÖZLÜKLERListeler Pythonda 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
    • 22. append parçacığı İlk parçacığımız "append". Bu kelime Türkçede "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 0dan başlatır."insert parçacığı İşte bu "insert" parçacığı yardımıyla listenin herhangi bir noktasına öğeekleyebiliyoruz. Bu kelime Türkçede "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"]
    • 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. 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.
    • 24. 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()
    • 25. 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.
    • 26. 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 Pythonda 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()
    • 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ı 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)
    • 28. 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ı yoksaMücellayı 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...
    • 29. "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öreya a değişkenini ya da b değişkenini "döndürüyor"; yani bize çıktı olarakveriyor...
    • 30. "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.
    • 31. 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 kelimelergetirildikten sonra sonunda 2.3 sürümü ile Python gerçek bir boolean tipine kavuşmuştur. Boolean veri tipinin Python’da bukadar 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.
    • 32. 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.
    • 33. 3.String TipleriPython C printf tarzı metin bi¸cimlendirme (StringFormatting) karakterlerini destekler. Bu biçimlendirmekarakterlerinin tam bir listesinehttp://www.python.org/doc/current/lib/typesseq-stringshtml 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.
    • 34. 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: Pythonda(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.
    • 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:", 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.
    • 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.iscimacera = Oyun()
    • 37. 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” olaraktanımlanmaları gerekiyor. Yani mesela, “enerji” yerine “self.enerji” diyerek, bu“enerji” adlı değişkenin yalnızca içinde bulunduğu fonksiyonda değil, ofonksiyonun dışında da kullanılabilmesini sağlıyoruz. İyice somutlaştırmakgerekirse, “__init__” fonksiyonu içinde tanımladığımız “enerji” adlı değişken, buhaliyle “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
    • 38. 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
    • 39. Eski ve Yeni SınıflarŞimdiye kadar verdiğimiz sınıf örneklerinde önemli bir konudanhiç bahsetmedik. Pythonda iki tipsınıf vardır: Eski tip sınıflar ve yeni tip sınıflar. Ancakkorkmanızı gerektirecek kadar fark yoktur buiki sınıf tipi arasında. Ayrıca hangi sınıf tipini kullanırsanızkullanın sorun yaşamazsınız. Ama tabiiki kendimizi yeni tipe alıştırmakta fayda var, çünkü muhtemelenPythonun sonraki sürümlerindenbirinde (büyük ihtimalle Python 3.0da) eski tip sınıflarkullanı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 başka bir sınıfı miras alma zorunluluğuyoktur. 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ğerkodları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ıylapolitikamız şu olacak:"Ya bir sınıfı miras al, ya da miras alman gereken herhangi bir sınıfyoksa, "object" adlı sınıfı miras al..."
    • 41. 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

    ×