Python (eski yazılar, sayfa 4)

Python ile soketler - 2

Bir önceki yazıda, Python ile soketlerin kullanımı konusuna genel bir giriş yapmıştım. O yazıda sadece istemci (client) soketlere yüzeysel olarak değinmiştim. Bu yazıda ise, sunucu özelliği olan programlarda soketlerin nasıl kullanılacağına değineceğim.

Bu yazıları tek bir seferde okuyup anlamaya daha müsait olması için, kısa ve öz tutmaya gayret ediyorum. Bu sebeple, bu yazıda sunucu programlarda kullanıldığını görebileceğimiz select ve threading gibi modüllerine değinmeyeceğim. Bunun yerine, bunların kendilerine ait kısa yazılar ile anlatılması bana daha verimli geliyor.

Devamını oku…

Python ile soketlere giriş

Merhabalar,

Bu yazıda, Python programlama diliyle soketlerin kullanılışı konusuna kısaca giriş yapmaya çalışacağım. Okuyucuda soketler hakkında temel bilgilerin olduğunu varsayıyorum. Bunların ne olduğu veya ne için kullanıldığı konusunda hiçbir bilgisi olmayanlar için şöyle özetleyebiliriz; soketler iletişim kanallarıdır. Bunlar aynı bilgisayarda iki işlem arası iletişim sağlayabilse de (örn: unix soketleri) bunları en çok ağ üzerinde iletişim için kullanırız. İnternetten bilgisayarınıza gelip giden tüm veriler için, mutlaka birer soket kullanılır.

Anlatıma geçmeden önce şunu da söylemek istiyorum ki, Python'daki socket modülünü lazım olmadıkça kullanmayınız. Demek istediğim şu ki, bir internet sayfası indirmek için socket açmak, HTTP başlıklarını göndermek, gerekirse yönlendirilen sayfaya yeniden soket açmak gibi bir uğraşa girmeyin. Python bu tip yaygın kullanımlar için zaten daha üst seviye modüllere sahip bir dil. Amerika'yı yeniden keşfetmeye gerek yok.

Devamını oku…

Python ve decorator... Nedir, ne işe yarar?

Python dilindeki decorator'ları anlamadan önce, fonksiyonların Python dilinde "first class citizen" olduklarını bilmek gerekir. "first class citizen" birebir çevirildiğinde, birinci sınıf vatandaş demek. Programlama dilleriyle ilgili kullanıldığında bu deyim, o dildeki bir varlığın, şu özellikleri taşıdığı anlamına gelir;

  • Çalışma anında oluşturulabilir.
  • Parametre olarak geçirilebilir.
  • Fonksiyonlardan döndürülebilir.
  • Bir değişkene atanabilir.

Python'da fonksiyonların birinci sınıf objeler olduğunu anlamak o kadar da zor değil. Python'daki her şey gibi, fonksiyonlar da birer obje. Ve biz, objelerin yukarıdaki tüm özellikleri taşıdıklarını biliyoruz. Dolayısıyla, fonksiyonlar da bu özellikleri taşıyor.

Devamını oku…

Python yield deyimi nedir? Ne işe yarar?

Yazıya başlamadan önce, kullandığım dil ile ilgili bir açıklamada bulunmam gerek. Her ne kadar bu yazının dili Türkçe olsa da, bazı kelimeleri, özellikle de Türkçe'ye tam olarak geçmemiş, veya Türkçe karşılığı henüz tam olarak yaygınlaşmamış bazı kelime ve terimleri İngilizcede olduğu gibi kullanmaya karar verdim. Birtakım şeyleri Türkçeye çevirmeye zorlamak, hem çok anlamsız oluyor, hem de bu terimleri İngilizce adlarıyla bilenler için kafa karışıklığına neden oluyor. Bu yüzden, yazının geri kalanında, aralara serpiştirilmiş İngilizce kelimeler bulacaksınız.

Python dilindeki yield deyimini anlamak için, generator'ları bilmek gerekiyor, generator'ları anlamak için de, iterator ve iterable kavramlarını anlamak gerekiyor. İngilizcede "iterate" kelimesi, tekrar tekrar uygulanmak veya işlenmek anlamına geliyor. Python'daki iterable ve iterator kavramları bu kelimeden türetilmiş. Python'da iter() yerleşik fonksiyona argüman olarak verebildiğimiz objelere iterable diyoruz. iter() fonksiyonu bize bir iterator döndürüyor. Iterator, objenin elemanları ne şekilde tanımlanırsa tanımlansın, bir koleksiyon içindeki tüm elemanlara sırasıyla erişebilmemiz için ortak bir arayüz oluşturan bir mekanizma. Kısacası, elemanları üzerinde sırasıyla gezinebildiğimiz, listeler ve demetler gibi objelere iterable diyoruz. Bu objeler, iter() fonksiyonu ile çağrıldığında, birer iterator döndürüyor, ve bu iterator'lar bir koleksiyondan sırasıyla eleman almak için kullanılıyor.

Devamını oku…

Örneklerle Python Metasınıflar

Bugün Eli Bendersky'ye ait Python metaclasses by example makalesini okudum. Metasınıflar benim için hep üç aşağı beş yukarı havada kalan kavramlar olmuşlardır. Bahsettiğim makaleyi okuduktan sonra, kafamda bir nebze daha iyi oturtabildim bunları. Bunun üzerine bu makaleyi Türkçe'ye çevirip paylaşmaya karar verdim. Tabi ki, Eli Bendersky'nin izni ile. Aşağıda makalenin tam metninin çevirisini bulabilirsiniz:

Python, çalışma yapısını ve özelliklerini gizleyen birçok "sihir" olmayışından ve diğerlerinden daha açık bir dil olduğundan haklı olarak gurur duyar. Diğer yandan, bazen, ilgi çekici soyutlamalara imkan sağlamak için olağandandan daha sihirli dil yapıları bulunan Python’un daha kirli ve anlaşılması güç kısımları deşilebilir. Metasınıflar böyle özelliklerdir.

Devamını oku…

Python Beautiful Soup Kütüphanesi ve Basitçe Kullanımı

Python'da HTML ve XML dosyalarını işlemek için, genelde acemi kullanıcılar, düzenli ifadeleri kullanır. Ancak düzenli ifadeler hem hata yapması kolay bir alandır, hem de bu iş için verimli değildir. Diğer yandan, BeautifulSoup gibi bu iş için tasarlanmış, performanslı ve kullanımı kolay bir kütüphanedir.

Beautiful Soup Python için bir HTML ve XML ayrıştırıcısıdır (parser). Beautiful Soup kütüphanesi kullanışlı olmasını şu özelliklerine borçludur:

Devamını oku…

Python ile soket programlama ve multiprocessing modülü

Bu yazıda, Python'daki multiprocessing ve socket modüllerini kullanarak basit bir HTTP sunucusu yapacağız. Bu modülleri kullanmak isteyenler ancak nereden başlayacağını bilemeyenler bu basit örnekle konuya giriş yapabilirler.

Yaptığım şey özetle şu; 5 tane işlem port 9090'ı dinliyor. Gelen isteklere sırasıyla cevap veriyorlar. Python içindeki Threading modülünden farkı ne derseniz, Python'daki GIL (Global Intrepreter Lock) yüzünden, threading modülü ile birden fazla işlemciyi aynı anda kullanamıyorsunuz. Ancak multiprocessing ile birden fazla işlem çalıştığı için, işlemcinizin tüm olanaklarından yararlanabilirsiniz :)

Devamını oku…

Python ve Excel Kütüphaneleri

Eğer Python ile excel dosyaları okumak veya yazmak istiyorsanız doğru yerdesiniz. Çeşitli Python kütüphaneleri ile excel dosyaları üzerinde işlem yapmak çocuk oyuncağı.

Python ile Excel dosyaları okumak ve yazmak, anladığım kadarıyla merak edilen bir konu ve günlük Python kullanımında ihtiyaç duyulabilecek bir bilgi. Bu yüzden, üstünkörü de olsa, konuya giriş için küçük bir belge yazmak istedim. Python kullanarak Excel dosyalarıyla çalışmak için geliştirilmiş, benim bildiğim, birkaç tane kütüphane var. Bunlardan xlwt Excel'e yazmak, xlrd ise Excel'den okumak için hazırlanmış. Diğer bir kütüphane olan xlutils ise, bunlar arasında bir nevi tutkal görevi görerek, yardımcı fonksiyonlarla bu ikisini birbirine bağlıyor. Bu yazıda, xlrd kütüphanesinden kısaca bahsedip, diğer kütüphanelere de ileriki zamanlarda değinmek istiyorum.

Devamını oku…

Python için Matematik Araçları Kütüphanesi

Beni twitter'dan takip edenler belki hatırlayacaklardır, birkaç gün önce C ile bazı matematik problemlerinin çözümüne yönelik bir Python kütüphanesi yazmaya başlamıştım. O kütüphaneyi bir Python modülüyle biraz daha geliştirdim. Bu kütüphaneyi son aldığı haliyle burada biraz açıklamak ve isteyenlerle paylaşmak istedim. Sanırım şu anda kullanıma hazır.

Devamını oku…