13 Kasım 2012 Salı

Sözlükler

Bir cümle tanım yada değişkenin birden fazla içerik ve/veya değişkenleri kapsıyorsa sözlük kullanımı zorunlu hale gelir.

Python.org den örnek verecek olursak:

>>> print '%(language)s da bildigim sadece %(number)03d modul bulunmaktadir..' % \
      {"language": "Python", "number": 950}
Python da bildigim sadece 950 modul bulunmaktadir..

Bu nasıl oluyor ?

>>> "Ali hemen %s %s" %('sinemaya', 'git')
%s aslında dış yazı için kullanılır . Bir tanımda birden fazla %s kullanırsanız doğru sırayla kullanmanız gerekir. % işareti stringde dış bağlantı kapısını açar. Bu bağlantı karakter liste tüp kelime veya sözlük olabilir.

>>> "selam sana %03d kere" %(15)
'selam sana 015 kere' Aslında %03d demek sayının sadece 3 haneyi doldurmazsa başına sıfır eklemesinin tanımıdır(ve tamsayı olmak zorundadır). Sayı 3 haneyi geçerse sayıyı yazar başına sıfır koymaz.

Python org daki örneğe dönücek olursak :
Bir dış data sözlüğümüz bulunmaktadır ve bunların sıralı yazılmasının anlamı yoktur. Sebebi ise zaten içerden tanımlı olarak kullanılmasıdır.

>>> print '%(language)s da bildigim sadece %(number)03d modul bulunmaktadir..' % \
      {"number": 950, "language": "Python"}
Python da bildigim sadece 950 modul bulunmaktadir..
iki durumda da aynı çıktı elde edilir.
Sözlükler genel olarak bir kelime (değişkenin) anlam karşılığıdır.

 Peki birden fazla anlamı varsa ne olacak ?

print '%(language)s da bildigim sadece %(number)03d modul bulunmaktadir..' % \
      {"number": 950, "language": ("Python" ,"Perl","C")}
('Python', 'Perl', 'C') da bildigim sadece 950 modul bulunmaktadir..

İçerde sözlük içinde bir tüp tanımladık ama çıktımız bir yazı olduğu için tüpü olduğu gibi yazmıştır,

Neden sözlükleri kullanıcaz? Nasıl kullanıcaz?

>>> a= {"number": 950, "language": {"first":"Python" ,"elma":"Perl","selam":"C"}}
>>> a
{'number': 950, 'language': {'elma': 'Perl', 'selam': 'C', 'first': 'Python'}}
>>> type(a)
<type 'dict'>
>>> d=a["language"]
>>> d
{'elma': 'Perl', 'selam': 'C', 'first': 'Python'}
>>> type(d)
<type 'dict'>

sözlükler hammallık yapmakdan kodcuyu korur. illede değer vermek zorunda değilsiniz fonksiyonlara da bağlayabilirsiniz ama mutlaka fonksiyon içinde aktif bir return komutu kullanmak zorundasınız.
Demiri demirle dövdüler; biri sıcak biri soğuktu.
İnsanı insanla kırdılar; biri aç biri toktu.

(Pir Sultan Abdal)

18 Nisan 2012 Çarşamba

Tk font not found (PIL module)

How to fix PIL imagefont.py errors (Font not found)

Only copy a font source (.pil and .pbm) to PIL directory.