Python (eski yazılar, sayfa 5)

Python list -- Bir çırpıda listeler

Python list, yani liste, herhangi bir sayıda diğer objeleri içinde bulunduran bir sandık vazifesi görüyor. Diğer dillerdeki listelerden en önemli farkı ise, bir listede birden fazla tip öğenin yanyana bulunabilmesi. Diğer konteynır tarzı objelerden farkı ise, listeler mutable olması ve sıralı olması diyebilir. Diğer konteynırlar nedir derseniz, kümeler (set) ve sözlükler (dict) bunlara örnek olarak gösterilebilir.

Devamını oku…

Python narsist sayılar

n haneli bir sayının basamaklarının n'inci üstlerinin toplamı, sayının kendisine eşitse, böyle sayılara narsist sayılar (armstrong sayıları da olur...) deniyor. Örneğin, 153, 3 haneli 1^3 + 5^3 + 3^3 = 153, olduğu için, 153 sayısı bir armstrong sayısı oluyor. Bununla ilgili bir forum konusu şurada vardı. Ben de en basitinden şöyle birşey yazdım;

Devamını oku…

Yerli ve yabancı Python kaynakları

İnsanlara önerilebilecek güzel yerli ve yabancı Python kaynaklarını bir yazı altında toplamaya karar verdim. Gelen yorumlarla (tabi gelirse...) ve zamanla aklıma yeni yerler geldikçe bu listeyi güncellemeyi düşünüyorum.

Yerli

Yabancı

Python string translate() metodu

Python'da string objesinin yerleşik (built-in) metotlarından biri olan translate() metodu, string içindeki karakterin, verilen tablodaki (maketrans() fonksiyonu ile yapılır) karşılıklarıyla değiştirerek bir kopyasını oluşturur. Ek olarak, bazı karakterleri silmeye de yarar. Örneğin;

Devamını oku…

Python 'descriptor' - giriş

Python'a taa 2.2 sürümünde girse de, çok fazla kullanılmayan bir özellik bu descriptor. Peki ne işe mi yarıyor bu? Muhtemelen bilirsiniz, java ve c++ gibi nesne bazlı dillerde "protected" denen bir nane var. Bir nesne'nin protected özelliklerini ancak kendisi değiştirebiliyor. Bunu da getter ve setter diye nitelendirilen public fonksiyonlar ile yapıyor.

Yine muhtemelen bilirsiniz, Python'da "protected" diye bir olay yok. Her nesnenin her özelliğini herkes kafasına göre değiştirebiliyor. İşte descriptor'ler burada devreye giriyor. Bu 'descriptor' denen şey bizim bunların erişimi kontrol altında tutmamıza yardımcı oluyor.

Devamını oku…

Python threading modülü

Python'da paralel işlem yapmak için seçenek çok. Standart Python kütüphanesindeki threading, multiprocessing, subprocess gibi üst-seviye modüller bu işleri diğer dillere bakılırsa bir seviye daha kolaylaştırıyor. Standart modül dışında da, bu amaçlar için yazılmış stackless gibi modüller de var. Bu yazıda threading modülü incelenecek. Ne yazık ki, bu modül hakkında Türkçe kaynak bulmak konusunda sıkıntı var. Bu nedenle, bu yazıda pratik örneklerle, bu modülün kullanılışı anlatılmaya çalışılacak.

Devam etmeden önce, process ve thread arasındaki farklara değinmekte fayda var. Threadler aynı işlem içerisinden, birkaç daldan çalışırlar. Yani, aynı hafızayı ve kaynakları kullanırlar. Bir başka deyişle, birkaç farklı thread, aynı veri üzerinde çalışabilir. Bu bir yandan daha hafif olmak ve thread'ler arasında iletişimin kolaylığı gibi üstünlüklere neden olsa da, diğer yandan kendine ait sorunları da beraberinde getirir. Bu sorunlara örnek olarak, deadlock ve race-condition verilebilir. İşin güzel yanı ise, Python'daki GIL (Global Interpreter Lock) ve queue modülü sayesinde, Python'da thread'leri kullanmak diğer dillerden daha basittir.

Devamını oku…