28 Aralık 2008 Pazar

Python 3.0'da Söz Dizimi Değişiklikleri: Öznitelik İçin Açıklamalar (Attribute Annotations)

(Arkadaşlar merhaba. Bugün Özgür Sönmez arkadaşımız eposta yoluyla, Python 3.0'daki söz dizimi değişiklikleriyle ilgili nefis bir yazı, hatta sitemizin ismine uygun bir şekilde tabiri caizse nefis bir deneyim paylaşımında bulundu, ben de aynı şekilde buraya aktarıyorum. Sorularınız için yorumlarınızı bekleriz.)

Python 3000'de birçok değişiklik var; bunlardan biri de sözdizimindeki değişiklikler. Bugün burada özniteliklere açıklama eklemenin python 3000'de ne kadar kolay ve göze hitap eden bir biçimde yapılabildiğini göreceğiz. Öyle ki, açıklamalar artık string (katar) olmak zorunda bile değil:


def Toplam (x: "Toplanacak Birinci Sayı", y: "Toplanacak İkinci Sayı") -> "Toplamın Sonucu":
...


ifadesi;

def Toplam (x,y):
...


ifadesi ile fonksiyonel olarak aynı. Ancak python içinde bir kodda bu metodun __annotation__ özniteliğini kullanırsanız şu şekilde bir sözlük alırsınız:


{'x': 'Toplanacak Birinci Sayı'
'y': 'Toplanacak İkinci Sayı'
'return': 'Toplamın Sonucu'
}


python.org'da söylendiğine göre bu yenilik bir framework ya da metaclass deneyimini cesaretlendirmek için getirilmiş bir açıklama standardizasyonu. Örnekte de gördüğümüz gibi bu yenilik gerçekten göz kamaştırıcı. Öyle ki, py'ciler bununla kalmamışlar, örneğin:


def StoktanGetir(malzeme: "Getirilecek malzemenin adı", no: "Getirilecek malzemenin no'su" = 1):
...


ifadesinde olduğu gibi. Açıklamaları eklerken varsayılan parametreden de vazgeçilmemiş. Üstelik en önemlisi açıklamalar fonksiyon parantezlerinin içinde yer alıyor. Bir başka belirtmek istediğim şey de açıklamaların katar olma zorunluluğunun olmaması. Bir sözlük yapısında olduğu için __annotations__ içinde değer olarak giren açıklamalar her türden olabilir.
Anlaşılıyor ki bundan böyle fonsiyonlarımızı şöyle yazacağız:


def aligel(x: "Nereye (string)",
y: "Kentkartım doluysa true, değilse false (bool)") -> "Gelebilecekse true, gelemeyecekse false":


İyi Çalışmalar.

3 yorum:

  1. Yorumların kodla içli dışlı olması bence hoş bir şey değil. Kodun okunurluğunu zorlaştırıyor. Tabi alışkanlıklardan ötürüde olabilir, zamanla alışırız belki. İlk bakışta itici geldi bana :)

    YanıtlayınSil
  2. alışmış kudurmuştan beterdir, değişiriz ama önemli değil py 3.0 olsun bizim olsun^^

    YanıtlayınSil