Normal şartlar altında, bir karakter dizisini tanımlamaya tek veya çift tırnakla başlamışsak, karakter dizisinin kapanış tırnağını koymadan Enter tuşuna bastığımızda Python bize bir hata mesajı gösterir. İşte \ kaçış dizisi bizim burada olası bir hatadan kaçmamızı sağlar. Eğer Enter tuşuna basmadan önce bu işareti kullanırsak Python tıpkı en üst örnekteki çift tırnak işaretinde şahit olduğumuz gibi hata vermeden bir alt satıra geçecektir.
78) Bazen kaçış dizilerini fark etmemiz gerekir çünkü kodumuz hata verebilir. Örnek:
Yukarıdaki kodumuz hata verdi. Bir dosya açmaya çalıştık ama dosyanın içindeki \n ifadesini gözden kaçırdık. Bu aslında bir kaçış dizisidir ve daha önceki konularda gördüğümüz üzere satırbaşı yapmaya yarar. Eğer sorunun gözden kaçan bir kaçış dizisinden kaynaklandığını fark edemezseniz, bu sorunu çözebilmek için saatlerinizi ve hatta günlerinizi harcamak zorunda kalabilirsiniz. Ancak ve ancak yukarıdaki karakter dizisi içinde sinsice gizlenen bir \n kaçış dizisi olduğu gözünüze çarparsa bu sorunu çözme yolunda bir adım atabilirsiniz. Bu problemi en başta kullandığımız kaçış dizisi olan \ işareti ile çözebiliriz.
Peki, şimdi ne yaptık? String karakterlerinin arasına belli aralıklarla boşluk bıraktık.
80)
Zil sesi (\a) kaçış dizisi:
>>> print("\a") // bir bip sesi elde ettik.
!bip!
>>> print("\a"*5) // bip sesini 5 katına çıkardık.
!bip!!bip!!bip!!bip!!bip!
Bu kaçış dizisinin GNU/Linux üzerinde çalışma garantisi yoktur. Hatta Windows sistemlerinde dahi çalışmayabilir. Hatta burada çıktı olarak !bip! ifadesinin yerine sembolü gelebilir.
81)
Aynı satırbaşı (\r) kaçış dizisi:
>>> print("Merhaba\rDünya")
Dünyaba
Burada, “Merhaba” karakter dizisi ekrana yazdırıldıktan sonra
\r kaçış dizisiyle satır başına dönülüyor ve bu kaçış dizisinden sonra gelen “Dünya” karakter dizisi “Merhaba” karakter dizisinin üzerine yazıyor. Tabii “Dünya” karakter dizisi içinde 5 karakter, “Merhaba” karakter dizisi içinde ise 7 karakter olduğu için, “Merhaba” karakter dizisinin son iki karakteri (“ba”) dışarda kalıyor. Böylece ortaya “Dünyaba” gibi bir şey çıkıyor. Bu kaçış dizisinin her işletim sisteminde çalışma garantisi yok. Ancak yine de bilmek te fayda var.
82)
Düşey sekme(\v) kaçış dizisi:
>>> print("düşey\vsekme") // alt satıra geçip tab tuşuna basılmış etkisi yarattı. düşey
sekme
Her işletim sisteminde çalışmayabilir. Dolayısıyla önerilmez.
83)
İmleç Kaydırma (\b) kaçış dizisi:
>>> print("yahoo.com\b.uk")
yahoo.co.uk
\b kaçış dizisinin etkisiyle imleç bir karakter sola kaydığı için, ‘com’ kelimesinin son harfi silindi ve bunun yerine
\b kaçış dizisinden sonra gelen .uk karakterleri yerleştirildi. Bu kaçış dizisinin Python’da çok nadir kullanıldığını ve çalışmama ihtimalini söyleyelim.
84)
Küçük Unicode (\u) kaçış dizisi:
UNICODE, karakterlerin, harflerin, sayıların ve bilgisayar ekranında gördüğümüz bütün işaretlerin her biri için tek ve benzersiz bir numaranın tanımlandığı bir sistemdir. Bu sistemde, ‘
kod konumu’ (code point) adı verilen bu numaralar özel bir şekilde gösterilir. Örneğin ‘
İ’ harfi UNICODE sisteminde şu şekilde temsil edilir:
u+0130
Python programlama dilinde yukarıdaki kod konumu ise şöyledir:
\u0130
O halde kodumuzu yazalım ve çıktıyı görelim.
>>> '\u0130'
'İ'
85)
Büyük Unicode (\U) kaçış dizisi
Bu kaçış dizisi \u adlı kaçış dizisiyle hemen hemen aynı anlama gelir. Ancak
U ile gösterilen kod konumları
u ile gösterilenlere göre biraz daha uzundur. Küçük u kaçış dizisini kullanarak ‘
İ’ harfinin UNICODE kod konumunu şöyle temsil ediyorduk:
>>> '\u0130'
'İ'
Eğer aynı kod konumunu büyük U ile göstermek istersek şöyle bir şey yazmamız gerekir:
>>> '\U00000130'
'İ'
Gördüğünüz gibi, burada
\U kaçış dizisinden sonra gelen kısım toplam 8 haneli bir sayıdan oluşuyor.
\u kaçış dizisinde ise bu kısmı toplam 4 haneli bir sayı olarak yazmıştık. İşte
\u kaçış dizisi ile
\U kaçış dizisi arasındaki fark budur.
86)
Uzun Ad (\N) kaçış dizisi: UNICODE sisteminde her karakterin benzersiz bir kod konumu olduğu gibi bir de uzun adı vardır. Örneğin ‘
a’ harfinin UNICODE sistemindeki uzun adı şudur: LATIN SMALL LETTER A
Bu uzun adları öğrenmek için
unicodedata adlı bir modülden yararlanabilirsiniz:
>>>import unicodedata /
/ Bir modül kullanmak için import komutu hayatidir unutmayın
>>>unicodedata.name('a')
'
LATIN CAPITAL LETTER A WITH CEDILLA'
İşte \N kaçış dizisi bu uzun isimleri kullanarak asıl karakterleri elde eder.
>>> print("\N{LATIN SMALL LETTER A}")
A
87)
Onaltılı Karakter (\x) kaçış dizisi: Onaltılı (hexadecimal) sayma sistemindeki bir sayının karakter karşılığını gösterir.
>>> "\x41" // Onaltılı sayma sistemindeki 41 sayısı ‘A’ harfine karşılık gelir.
'A'
88)
Etkisizleştirme (r) kaçış dizisi: Bu kaçış dizisini, daha önce öğrendiğimiz \r adlı kaçış dizisi ile karıştırmayın. Şöyle bir çıktı almak istediğimizi düşünün;
Kurulum dizini: C:\aylar\nisan\toplam masraf
>>> print("Kurulum dizini: C:\aylar\nisan\toplam masraf")
Kurulum dizini: C:ylar
isan oplam masraf
Olmadı dimi? Python karakter dizisi içinde geçen ‘\aylar’, ‘\nisan’, ve ‘\toplam masraf’ ifadelerinin ilk karakterlerini yanlış anladı! Bu gibi ifadeler Python’ın gözünde birer kaçış dizisi. Dolayısıyla Python \a karakterlerini görünce bir !bip! sesi çıkarıyor, \n karakterlerini görünce satır başına geçiyor ve \t karakterlerini görünce de Tab tuşuna basılmış gibi bir tepki veriyor. Daha önce bu durumu şöyle bir kod yazarak engellemiştik:
>>> print("Kurulum dizini: C:\\aylar\\nisan\\toplam masraf") Kurulum dizini: C:\aylar\nisan\toplam masraf
Ama bu sorunun üstesinden gelmenin çok daha basit ve pratik bir yolu vardır:
>>> print(r"Kurulum dizini: C:\aylar\nisan\toplam masraf") Kurulum dizini: C:\aylar\nisan\toplam masraf // baştaki r harfi her şeyi hallediyor.
89) Amacımız aşağıdaki gibi bir çıktı elde etmek olsun.
Kaçış dizisi: \
O halde kodumuzu yazalım.
>>>print("Kaçış dizisi: \")
SyntaxError: EOL while scanning string literal
Durup dururken bu kod neden çalışmadı acaba? Biliyorsunuz ki çift tırnak açtığımız zaman tekrar kapatmamız gerekiyor. Ancak ilginç bir şekilde burada çift tırnağımızı kapattığımız görülüyor. Yani sorun yok gibi. Ama öyle değil, lütfen sondaki kapanış tırnağının soluna bakın. Ne görüyorsunuz? \ işareti dimi? Peki bu işaretin anlamı neydi? Bu işaret önündeki parametreleri geçersiz kılıyordu. Yani bir nevi yok edici. Bu işaret yüzünden sanki kapanış tırnağını kapatmamışız gibi bir etki yarattık. Hatta öyle ki bu etkisizleşmeyi, karakter dizisinin başına koyduğunuz ‘r’ kaçış dizisi de engelleyemez. O halde çözüm nedir? Birinci çözüm \ işaretinin sağına bir adet boşluk karakteri yerleştirmektir. Çünkü \ işareti sağına baktığı zaman sadece bir boşluk görecek ve etkisizleştirecek bir şey bulmayacak. Örnek:
>>> print("Kaçış dizisi: \ ") \ işaretinin hemen sağında bir boşluk bıraktık.
Kaçış dizisi: \
Diğer bir çözüm kaçış dizisini çiftlemek. Yan yana ters taksim yapacağız. Böylece birbirini götürecekler ve bir etki olmayacak.
>>> print("Kaçış dizisi: \\")
Kaçış dizisi: \
Ya da karakter dizisi birleştirme yöntemlerinden herhangi birini kullanabilirsiniz:
>>> print("Kaçış dizisi: " + "\\")
>>> print("Kaçış dizisi:", "\\")
>>> print("Kaçış dizisi: " "\\")
90)
Sayfa Başı (\f) kaçış dizisi: Pek kullanılmayan bir kaçış dizisidir. Görevi, özellikle eski yazıcılarda, bir sayfanın sona erip yeni bir sayfanın başladığını göstermektir. Eski model yazıcılar, bu karakteri gördükleri noktada mevcut sayfayı sona erdirip yeni bir sayfaya geçer.
>>> f = open("deneme.txt", "w")
>>> print("deneme\fdeneme", file=f)
>>> f.close()
Şimdi bu kodlarla oluşturduğunuz deneme.txt adlı dosyayı Microsoft Word gibi bir programla açın. ‘deneme’ satırlarının iki farklı sayfaya yazdırıldığını göreceksiniz. Bu arada, eğer Microsoft Word dosyayı açarken bir hata mesajı gösterirse, o hata mesajına birkaç kez ‘tamam’ diyerek hata penceresini kapatın. Dosya normal bir şekilde açılacaktır.
91)
Programları Kaydetme ve Çalıştırma: Şimdiye kadar bütün işlerimizi Python’ın etkileşimli kabuğu üzerinden hallettik. Ancak etkileşimli kabuk son derece kullanışlı bir ortam da olsa, bizim asıl çalışma alanımız değildir. Kodlar çoğalıp büyümeye başlayınca bu ortam yetersiz gelmeye başlayacaktır.
92) Etkileşimli kabuğu genellikle ufak tefek Python kodlarını test etmek için kullanırız.
93) Asıl programlarımızı etkileşimli kabuğa değil, program dosyasına yazarız.
94) Bu arada yazdığınız kodları bir yere kaydedip saklamak isteyeceksiniz. İşte burada metin düzenleyiciler devreye girecek.
95) Python kodlarını yazmak için istediğiniz herhangi bir metin düzenleyiciyi kullanabilirsiniz. Hatta
Notepad bile olur. Ancak Python kodlarını ayırt edip renklendirebilen bir metin düzenleyici ile yola çıkmak her bakımdan hayatınızı kolaylaştıracaktır.
96) Python kodlarınızı yazmak için Microsoft Word veya OpenOffice.Org OOWriter gibi, belgeleri ikili (binary) düzende kaydeden programlar uygun değildir. Kullanacağınız metin düzenleyici, belgelerinizi
düz metin (plain text) biçiminde kaydedebilmeli.
97) Eğer kullandığınız sistem GNU/Linux’ta Unity veya GNOME masaüstü ortamı ise başlangıç düzeyi için Gedit adlı metin düzenleyici yeterli olacaktır. Eğer kullandığınız sistem GNU/Linux’ta KDE masaüstü ortamı ise Kwrite veya Kate adlı metin düzenleyicilerden herhangi birini kullanabilirsiniz. Şu aşamada kullanım kolaylığı ve sadeliği nedeniyle
Kwrite önerilebilir.
98) Python programlama dilini öğrenmeye yeni başlayan Windows kullanıcıları için en uygun metin düzenleyici
IDLE’dır. Başlat > Tüm Programlar > Python3.5 > IDLE (Python GUI) yolunu takip ederek IDLE’a ulaşabilirsiniz.
IDLE aslında Python’ın etkileşimli kabuğudur. Dolayısıyla asıl kodları buraya yazmayacağız. Python programlama diline yeni başlayanların en sık
yaptığı hatalardan biri de, kaydetmek istedikleri kodları bu ekrana yazmaya çalışmalarıdır.
99) Unutmayın, aşağıdaki ekrana yazdığınız kodlar kapattığınızda kaybolur. IDLE’ı açtığınızda şöyle bir ekranla karşılaşacaksınız:
Sol üst köşede
File [Dosya] menüsüne tıklayın ve menü içindeki
New Window [Yeni Pencere] düğmesine basın. Aşağıdaki gibi bir ekranla karşılaşacaksınız. İşte Python kodlarımızı bu beyaz ekrana yazacağız.
100) Açtığımız yeni dosyaya aşağıdaki kodları yazalım. Dikkat ettiyseniz artık >>> sembolü yok.
tarih = "02.01.2012"
gün = "Pazartesi"
vakit = "öğleden sonra"
print(tarih, gün, vakit, "buluşalım", end=".\n")
Bu noktadan sonra
File > Save as yolunu takip ederek programımızı masaüstüne randevu.py adıyla kaydediyoruz. Şu anda programımızı yazdık ve kaydettik. Artık programımızı çalıştırabiliriz. Bunun için
Run > Run Module yolunu takip etmeniz veya kısaca F5 tuşuna basmanız yeterli olacaktır. Bu iki yöntemden birini kullanarak programınızı çalıştırdığınızda şöyle bir çıktı elde edeceksiniz:
02.01.2012 Pazartesi öğleden sonra buluşalım.
Tebrikler! İlk Python programınızı yazıp çalıştırdınız.