└── README.MD /README.MD: -------------------------------------------------------------------------------- 1 | # PHP Programcıları İçin Python 2 | 3 | Daha önce PHP ile çalışanlar, farklı arayışlara girebilirler. Yeni bir dil keşfetmek istediklerinde öğrenmesi diğer dillere göre hem daha kolay hem de zevk versin isterler. 4 | 5 | Python, öğrenmesi daha kolay ve daha zevkli bir programlama dilidir. Bu repoda Python öğrenmeyi düşünen PHP programcılarına basit benzerlikler sunacağım. 6 | 7 | ## Python 8 | 9 | Herhangi bir Linux/Unix dağıtımı kullanıyorsanız Python hazır olarak yüklü gelecektir. Eğer Windows kullanıcısı iseniz Python yorumlayıcısını bilgisayarınıza indirip kurabilirsiniz. 10 | 11 | *İndir*: [https://www.python.org/](https://www.python.org/) 12 | 13 | Bu repoda Python 3.5.x sürümü ile anlatım yapacağım. Ancak 3.x sürümlerinin önceki sürümlerinde de bu basit bilgiler işinize yarayacaktır. 14 | 15 | Daha fazla bilgi almak için Python belgeler sayfasına bakabilirsiniz. [https://docs.python.org/3/](https://docs.python.org/3/) 16 | 17 | Python hakkında geçerli ve mükemmel bir Türkçe kaynak arıyorsanız Fırat Özgül tarafından hazırlanan ücretsiz çeviriye göz atabilirsiniz: [http://www.istihza.com/](http://www.istihza.com/) 18 | 19 | *Python 2.x/3.x Sürümleri için ayrı ayrı belgelendirmeler mevcuttur.* 20 | 21 | ## İçerik Tablosu: 22 | 23 | - [Başlarken](#başlarken) 24 | - 1 - [Ekrana Değer Yazdırmak](#1---ekrana-değer-yazdırmak) 25 | - 1.1 - [Yorum Satırları](#11---yorum-satırları) 26 | - 1.2 - [Değişkenler](#12---değişkenler) 27 | - 1.3 - [Sabitler](#13---sabitler) 28 | - 1.4 - [Diziler](#14---diziler) 29 | - 1.5 - [Veri Türleri](#15---veri-türleri) 30 | - 1.6 - [Karar Yapıları](#16---karar-yapıları) 31 | - 1.7 - [Döngüler](#17---döngüler) 32 | - 1.7.1 - [while Döngüsü](#171---while-döngüsü) 33 | - 1.7.2 - [for Döngüsü](#172---for-döngüsü) 34 | - 1.8 - [Fonksiyonlar](#18---fonksiyonlar) 35 | - 1.9 - [Sınıflar](#19---sınıflar) 36 | 37 | - [Yapılacaklar](#yapılacaklar) 38 | - [Katkı](#katkı) 39 | 40 | ### Başlarken 41 | 42 | Bu bölüme söz dizim ile başlamak istiyorum. Python söz dizimi PHP'ye göre daha basittir. PHP'de bulunan noktalı virgül, Python için gerekli değildir. Ayrıca Python ile kodlama yaparken dil etiketleri açmanıza da gerek yoktur. Python'da dosya uzantıları **.py** şeklinde verilir. Python ile yazılan kodları çalıştırmak için konsol ekranına `python3 dosyaadi.py` komutu verilir. 43 | 44 | PHP'de kod yazacaksanız mutlaka PHP etiketini açmalısınız: 45 | 46 | ```php 47 | 72 | ``` 73 | Yukarıdaki kod ile PHP'de merhaba dünya yazdırırken dil etiketlerini açtık ve ifade sonunu noktalı virgül ile kapattık. Fakat Python için böyle bir gereksinim söz konusu değil. 74 | 75 | **main.py** 76 | 77 | ```python 78 | print('Merhaba Dünya') 79 | ``` 80 | 81 | Php'de echo iki şekilde yazılabilir. `echo` ve 'echo()' ancak Python3 ile kodlama yapıyorsanız **print()** sadece `print()` olarak yazılır. Python 2.x sürümlerinde `print` kullanımı da mevcuttur. 82 | 83 | ### 1.1 - Yorum Satırları 84 | 85 | PHP ile yorum satırları şu şekilde gösterilir: 86 | 87 | ```php 88 | 120 | ``` 121 | Yukarıda değişken adının başına `$` dolar gelirken, ayrıca ifade sonuna noktalı virgül de geldi. Python ile tanımlama şöyle: 122 | 123 | **main.py** 124 | 125 | ```python 126 | 127 | degisken = "Bir değişken" 128 | ``` 129 | 130 | Python ile değişken tanımlamak bu kadar basittir. Herhangi bir sembol ya da noktalı virgül kuralı aranmaz. 131 | 132 | ### 1.3 - Sabitler 133 | 134 | PHP'de sabitler, `const` ve `define()` ile yapılırken, Python'da böyle bir durum söz konusu değildir. Ancak sabitleri hatırlatır şekilde farklı dosyalarda tanımlamalar yapabilirsiniz. 135 | 136 | **index.php** 137 | 138 | ```php 139 | '; 175 | print_r($meyveler); 176 | echo ''; 177 | 178 | Array 179 | ( 180 | [0] => elma 181 | [1] => armut 182 | [2] => kivi 183 | [3] => portakal 184 | ) 185 | 186 | ``` 187 | 188 | Ayrıca `array()` işlevi olmadan el ile dizileri oluşturabiliriz: 189 | 190 | ```php 191 | '; 199 | print_r($meyveler); 200 | echo ''; 201 | 202 | Array 203 | ( 204 | [0] => elma 205 | [1] => armut 206 | [2] => kivi 207 | [3] => portakal 208 | ) 209 | ``` 210 | 211 | Kısacası bu şekilde iki tanımı vardır. Python ise listeler ile dizi oluşturmaya destek verir. Örneğin klasik olarak bir liste oluşturalım: 212 | 213 | ```python 214 | 215 | import pprint 216 | 217 | meyveler = ['elma', 'armut', 'kivi', 'portakal'] 218 | 219 | pprint.pprint(meyveler) 220 | 221 | repr(meyveler) 222 | ``` 223 | 224 | Yukarıda pprint kütüphanesini dosyaya dahil ettik. Bu kütüphanedeki `pprint()` işlevi, `print_r()` ile aynı görevi görmektedir. Yine bir alt satırdaki `repr()` işlevi de aynı görevi görür. Çıktıları PHP'deki gibi olmakta. 225 | 226 | ```python 227 | 228 | # pprint() 229 | 230 | ['elma', 'armut', 'kivi', 'portakal'] 231 | 232 | # repr() 233 | 234 | "['elma', 'armut', 'kivi', 'portakal']" 235 | ``` 236 | 237 | Python'da var olan bir diziye ekleme işlemini `append()` işlevi ile yaparız. 238 | 239 | ```python 240 | meyveler.append("vişne") 241 | ``` 242 | 243 | --- 244 | **BURADA TUPLE'DAN BAHSEDİLEBİLİR** 245 | --- 246 | 247 | 248 | ### 1.5 - Veri Türleri 249 | 250 | PHP ve Python'da değişkenleri tanımlarken verilerin tiplerini belirtmemize gerek yok. Ancak bazı durumlarda bu veri tiplerini bilmemiz gerekebilir. Python için bazı veri tipleri şunlardır: 251 | 252 | --- 253 | PHP'deki veri tipleri de sıralanabilir. 254 | --- 255 | 256 | **Numerik Tipler** 257 | 258 | - int 259 | - float 260 | - long (Python 2.x için) 261 | - complex 262 | 263 | **Diğer Tipler** 264 | 265 | - str 266 | - byte (Yalnızca Python 3.x için) 267 | - byte array (Yalnızca Python 3.x için) 268 | - list 269 | - tuple 270 | - dict 271 | - bool (True ya da False durumlarında) 272 | 273 | --- 274 | **Dict tipinden bahsedilebilir.** 275 | --- 276 | 277 | 278 | ### 1.6 - Karar Yapıları 279 | 280 | PHP'de ve Python'da karar yapıları farklı şekilde tanımlanır. Karar yapıları başlığı altında if-else kontrollerini anlatacağım. 281 | 282 | PHP'de basit bir if tanımı şöyle yapılır: 283 | 284 | ```php 285 | 337 | ``` 338 | 339 | --- 340 | **PHP'nin endif ile biten statement'ından bahsedilebilir.** 341 | --- 342 | 343 | Bu PHP kodu hatalı bir PHP kodudur. Ayrıca diğer durumları da göz önüne alırsak: 344 | 345 | Örneğin PHP'nin else ve else if durumlarını Python'da şöyle yaparız: 346 | 347 | ```python 348 | 349 | if 1 < 2: 350 | print("Minik") 351 | elif 2 > 1: 352 | print("Garip bir if-else") 353 | else: 354 | print("Değişik") 355 | ``` 356 | 357 | Python'da else if, elif olarak kullanılır. 358 | 359 | *Python'da switch-case deyimi yoktur.* 360 | 361 | ### 1.7 - Döngüler 362 | 363 | PHP'de döngüler for, foreach, while, do-while iken, Python'da sadece for ve while döngüsü vardır. Örneğin PHP'de while döngüsünü şöyle düşünelim: 364 | 365 | #### 1.7.1 - while Döngüsü 366 | 367 | ```php 368 | merhaba(); 503 | ``` 504 | 505 | Python'da ise bu sınıfın tanımlanması şöyle olur: 506 | 507 | ```python 508 | class Sinif: 509 | def merhaba(self): 510 | print("Merhaba Dünya") 511 | 512 | a = Sinif() 513 | 514 | a.merhaba() 515 | ``` 516 | 517 | Python'da sınıfları türetirken `new` anahtar kelimesini kullanmazsınız. Ve sınıf işlevini çağırırken nokta ile belirtirsiniz. Ayrıca Python'da her oluşturduğunuz sınıfın bir `object` miras almasını önerirler. Örnek: 518 | 519 | ```python 520 | class Sinif(object): 521 | def merhaba(self): 522 | print("Merhaba Dünya") 523 | ``` 524 | 525 | Bu kodun yukarıdakinden hiçbir farkı yok. Nesnelerde miras alma olayı PHP'de `extends` ile yapılırken, Python'da yukarıda gördüğümüz şekliyle yapılmakta. 526 | 527 | ```php 528 | 529 | Harika("Elma"); 544 | 545 | ?> 546 | ``` 547 | Yukarıdaki kodu Python için aynen şöyle yazarız: 548 | 549 | ```python 550 | class Mesaj: 551 | def Harika(self, mesaj): 552 | return(mesaj+" harika bir meyvedir") 553 | 554 | class Meyve(Mesaj): 555 | pass 556 | 557 | 558 | meyve = Meyve() 559 | 560 | print(meyve.Harika("Elma")) 561 | ``` 562 | 563 | Eğer çoklu miras alacak olsaydık şöyle yapardık: 564 | 565 | ```python 566 | 567 | class Meyve(Mesaj, Uretim, Tukeyim, Falan, Filan): 568 | pass 569 | ``` 570 | 571 | O durumda miras alınmış olan sınıfın ilgili işlevini Meyve sınıfımız ile kullanabilirdik. Yukarıdaki Meyve ~ Mesaj sınıf örnekleri anlamsız dursa da PHP'de ve Python'da nasıl yapıldığını göstermek açısından belirttim. 572 | 573 | # Yapılacaklar 574 | 575 | - [ ] Dosya İşlemleri Anlatılacak 576 | - [ ] PHP'de Olan Bazı Fonksiyonların Python'daki Karşılıkları Anlatılacak 577 | - [ ] Python ile Web Programlama Üzerine Konular Anlatılacak (Frameworkler vs.) 578 | 579 | # Katkı 580 | 581 | Siz de bu repoya katkı yapabilirsiniz. Katkılarınızı esirgemeyin. 582 | --------------------------------------------------------------------------------