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.
Hiç yorum yok:
Yorum Gönder