Python'a Hızlı Bir Bakış

2 Yorum, 09 Ocak 2018 05:44, by Cenk Tuna, in

Bir süredir ara verdiğimiz paylaşımlara yeniden başlayarak Python dünyasının vazgeçilmez “topluluk kültürünü” yeniden canlandırmak istedik. Bu yazı bir giriş mahiyetinde olup bundan sonra çeşitli konularda seriler yayınlamak istiyorum.

Geçmişte farklı programlama dilleriyle yazdıktan sonra tanıştım Python’la. Beni en çok etkileyen şey Java ve C#’ta yeni sürümlerle peyderpey gelen özelliklerin Python’da çoktan var olduğunu görmekti. Bu konuyla ilgili ilerde bir yazı yazmayı düşünüyorum. En güzel özelliklerinden birisi ise basit işlemlerin basit kodlar ile yapılabilmesi.

Python Nedir?

Python yüksek seviyeli, nesneye dayalı ve açık kaynak kodlu bir programlama dilidir. Dinamik tiplerle güçlü ve oldukça esnek bir kodlama imkanı sağlar. Bir tamsayıyı, diziyi, listeyi veya bir sözlüğü yahut herhangi bir nesneyi aynı şekilde tanımlayıp kullanılabilmesiyle programcıya çok fazla özgürlük verir. Tabi bu haliyle derleme zamanında kontrol yapılamadığından hata bulmak zorlaşır.  Bazılarına göre de performans kaybı üretir.

Python geniş bir kütüphane koleksiyonuna sahiptir. PIP paket yöneticisi sayesinde pek çok programcının tecrübelerini paylaşarak oluşturdukları faydalı modüller ve paketler ile geliştiricilerin işi hayli kolaylaşmaktadır. Belki de kendisini güçlü kılan özelliklerden biri de bu olabilir. Dilin yapısı ya da syntax bir tarafa yazılımcı için bir çok problem çözülüp paket haline getirilmiştir.

Her şeyden önemlisi de basit yapısı ile öğrenmesi ve başkasının yazdığı kodu anlaması kolaydır. Python ile ilgili webde pek çok detaylı kaynak bulunabilir.

Python’un Temelleri

Python sayılar,stringler, listeler, sözlük ve dosyalar gibi yerleşik veri tiplerine sahiptir. Bu sayede kodlama(yazma&bakım) kolaylaşır, taşınabilirlik ve verimlilik artar.

Sayılar aslında bilindiği gibi. Integer, C’deki long’a eşdeğerdir. Long sınırsız büyüklükte uzun tam sayılardır. Float  ise C veya Java’daki double gibidir.

Bir karakter dizisi olarak stringler üzerinde; “s1 + s2” diyerek birleştirme, “s1 * 3” diyerek tekrarlama, “s1[i]” şeklinde indeksleme, “s1[i:j]” şeklinde dilimleme ve “s1[-1]” ile  son karakteri elde etme işlemleri kolayca gerçekleştirilebilir. Stringler değişmez dizilerdir;  onları değiştirmek için, bir kopyasını çıkarmak gerekir: ”s1[3] = ’c’” yerine “s2 = s1[0:2] + ’c’ + s1[3:]” yazılır.

Python esnek ve güçlü bir liste yapısına sahiptir. Listeler değiştirilebilir dizilerdir; stringlerin aksine yerinde değiştirilebilirler. Köşeli parantez ile gösterilir. “liste1 = [1,2,3,4]” ve liste2 = [1,2, [3,4, [5], 6], 7]” şeklinde iç içe geçmiş alt listeler oluşturabilir. Birleştirme, tekrarlama, dilimleme, ekleme, genişletme, sıralama ve tersine çevirme işlemleri hayli pratik bir şekilde uygulanabilir. “Range” komutuyla da hızlıca bir tam sayı listesi oluşturulabilir.

Sözlük(dictionary), bir karma tablo veya ilişkisel liste diye tanımlanabilir. Aslında sıra dışı rastgele nesne koleksiyonlarıdır. “’key’:value” yapısındadır ve süslü parantez ile ifade edilir. “d1 = {}  d2 = {'spam': 2, 'yumurta', 3}”. İç içe geçmiş olarak kullanılabildiği gibi ekleme, silme ve yerinde değiştirme uygulanabilir.

Tuplelar değiştirilemez listeler gibidir. Enumerated tiperle uğraşmak güzeldir. Çoğunlukla önceden belirlenmiş bir boyut veya uzunlukta bir listeye sahip olmak istenildiğinde yararlıdır. Listelerde olduğu gibi iç içe yerleştirilebilir, indekslenebilir, dilimlenebilir, uzunluğu hesaplanabilir.

Python bir script dili olduğu için birçok I/O işlemini destekler. “out_file = dosya ('fname', 'w')” veya “in_file = dosya ('fname', 'r')” şeklinde, kullanımı çok kolaydır.

Yukarıda da bahsedildiği gibi Python dinamik tipler kullanır. Değişkenleri önceden tanımlamaya gerek yoktur. Değişkenler, onlara değer atayarak örneklenir. Atama işleminden önce bir değişkene başvurmak bir hata üretir. Aynı anda birden fazla değişken atanabilir.

Python kodları bloklardan oluşur. Bir sınıf veya metot, onun içindeki döngüler, hata/istisna yönetimi kalıpları, koşullu ifadeler vs. birer blok sayılır. Bu blokları sınırlandırmak veya birbirinden ayırmak için girinti(indent) kullanılır. (Farklı editörlere sekmeleri yapılandırmak gerekebilir.) Satıra sığmayan durumlarda bir ters slash(“\”) kullanılır.

Python’da döngüler tüm indekslenebilir veri yapılarında kullanılabilir. Bu, farklı veri yapılarının kontrol edilmesinde poliformik tek bir arayüz sağlamış olur. Polimorfik yapı kullanmak indekslere sıralı erişmekten çok daha hızlıdır. Yani “for item in list” ifadesi “for i in len(list)”den daha hızlı çalışacaktır.

Python’da fonsiyonlar bir çok dilde olduğu gibi parametreler alır ve geriye bir veya birden fazla değer döndürebilir.  Seçenekli(ön tanımlı) parametre kullanılabilir. Bunlara ilave olarak Python’da “*args ve **args” diye yıldızlı parametreler vardır. Yıldızlı parametreler, bir fonksiyonun parametre sayısı herhangi bir şekilde sınırlanmak istenmediği durumlarda çok işe yarar. Fonksiyona gönderilen parametreleri bir liste veya bir sözlük olarak yakalamak kullanım kolaylığı açısından pek çok kolaylık getirecektir. Liste ve sözlüklerin ne kadar etkili kullanıldığı düşünüldüğünde daha iyi anlaşılacaktır.

Son olarak, hızlı ve okunabilir kod yazmak için Python tabanlı bir IDE veya eklentilerle zenginleştirilmiş bir metin editörü kullanın. Şurada https://wiki.python.org/moin/PythonEditors uzun bir liste var. Ben basit olduğundan ve esnekliğinden dolayı Atom’u tercih ediyorum. İlave olarak built-in modüllerden her zaman yararlanın ve en önemlisi de iyi Python kodu nasıl yazılır araştırın, öğrenin.

 

Tags:
Python

Yazar Hakkında

2 Yorum

16 Ocak 2018 11:54

Belli bir teknolojide deneyimi olanlar ve Python dilini öğrenmeye nereden başlayacağını bilemeyenler için yol gösterici bir yazı olmuş. Teşekkürler.

16 Ocak 2018 10:35

Python ı duyup ama hakkında bilgi sahibi olmayanlar için genel hatlarıyla bilgi edindiren güzel bir paylaşım olmuş. Teşekkürler devamını bekliyoruz.

Yorumunuzu Paylaşırsanız seviniriz.

Girdiğiniz e-posta adresi kimseyle paylaşılmaz. Sadece kimlik olarak kullanılır.