ters tırnak / Kaçış Dizileri — Yazbel Python Belgeleri

Ters Tırnak

ters tırnak

Kaçış Dizileri¶

Python’da karakter dizilerini tanımlayabilmek için tek, çift veya üç tırnak işaretlerinden faydalandığımızı geçen bölümde öğrenmiştik. Python bir verinin karakter dizisi olup olmadığına bu tırnak işaretlerine bakarak karar verdiği için, tek, çift ve üç tırnak işaretleri Python açısından özel bir önem taşıyor. Zira Python’ın gözünde bir başlangıç tırnağı ile bitiş tırnağı arasında yer alan her şey bir karakter dizisidir.

Örneğin ilk olarak bir işareti koyup ardından “elma şeklinde devam ettiğinizde, Python ilk tırnağı gördükten sonra karakter dizisini tanımlayabilmek için ikinci bir tırnak işareti aramaya başlar. Siz “elma” şeklinde kodunuzu tamamladığınızda ise Python bellekte “elma” adlı bir karakter dizisi oluşturur.

Bu noktada size şöyle bir soru sormama izin verin: Acaba tırnak işaretleri herhangi bir metin içinde kaç farklı amaçla kullanılabilir?

İsterseniz bu sorunun cevabını örnekler üzerinde vermeye çalışalım:

Ahmet, “Bugün sinemaya gidiyorum,” dedi.

Burada tırnak işaretlerini, bir başkasının sözlerini aktarmak için kullandık.

‘book’ kelimesi Türkçede ‘kitap’ anlamına gelir.

Burada ise tırnak işaretlerini bazı kelimeleri vurgulamak için kullandık.

Bir de şuna bakalım:

Yarın Adana’ya gidiyorum.

Burada da tırnak işaretini, çekim eki olan ‘-(y)a’ ile özel isim olan ‘Adana’ kelimesini birbirinden ayırmak için kesme işareti görevinde kullandık.

Şimdi yukarıda verdiğimiz ilk cümleyi bir karakter dizisi olarak tanımlamaya çalışalım:

>>> 'Ahmet, "Bugün sinemaya gidiyorum," dedi.'

Burada karakter dizisini tanımlamaya tek tırnak işareti ile başladık. Böylece Python bu karakter dizisini tanımlama işlemini bitirebilmek için ikinci bir tek tırnak işareti daha aramaya koyuldu ve aradığı tek tırnak işaretini cümlenin sonunda bularak, karakter dizisini düzgün bir şekilde oluşturabildi.

Dediğimiz gibi, Python’ın gözünde tırnak işaretleri bir karakter dizisini başka veri tiplerinden ayırt etmeye yarayan bir ölçüttür. Ama biz insanlar, yukarıda verdiğimiz örnek cümlelerden de göreceğiniz gibi, programlama dillerinden farklı olarak, tırnak işaretlerini bir metin içinde daha farklı amaçlar için de kullanabiliyoruz.

Şimdi yukarıdaki karakter dizisini şöyle tanımlamaya çalıştığımızı düşünün:

>>> "Ahmet, "Bugünsinemayagidiyorum," dedi."

İşte burada Python’ın çıkarları ile bizim çıkarlarımız birbiriyle çatıştı. Python karakter dizisini başlatan ilk çift tırnak işaretini gördükten sonra, karakter dizisini tanımlama işlemini bitirebilmek için ikinci bir tırnak işareti daha aramaya koyuldu. Bu arayış sırasında da ‘Bugün’ kelimesinin başındaki çift tırnak işaretini gördü ve karakter dizisinin şu olduğunu zannetti:

>>> "Ahmet, "

Buraya kadar bir sorun yok. Bu karakter dizisi Python’ın sözdizimi kurallarına uygun.

Karakter dizisi bu şekilde tanımlandıktan sonra Python cümlenin geri kalanını okumaya devam ediyor ve herhangi bir tırnak işareti ile başlamayan ve kendisinden önce gelen öğeden herhangi bir virgül işareti ile ayrılmamış ‘Bugün’ kelimesini görüyor. Eğer bir kelime tırnak işareti ile başlamıyorsa bu kelime ya bir değişkendir ya da sayıdır. Ama ‘Bugün’ kelimesi ne bir değişken, ne de bir sayı olduğu, üstelik önceki öğeden de virgülle ayrılmadığı için Python’ın hata vermekten başka çaresi kalmıyor. Çünkü biz burada ‘Bugün’ kelimesinin baş tarafındaki çift tırnak işaretini karakter dizisi tanımlamak için değil, başkasının sözlerini aktarmak amacıyla kullandık. Ancak elbette bir programlama dili bizim amacımızın ne olduğunu kestiremez ve hata mesajını suratımıza yapıştırır:

File"<stdin>",line1"Ahmet, "Bugünsinemayagidiyorum," dedi."^SyntaxError:invalidsyntax

Peki biz böyle bir durumda ne yapmalıyız?

Bu hatayı engellemek için karakter dizisini tanımlamaya çift tırnak yerine tek tırnakla ya da üç tırnakla başlayabiliriz:

>>> 'Ahmet, "Bugün sinemaya gidiyorum," dedi.'

… veya:

>>> """Ahmet, "Bugün sinemaya gidiyorum," dedi."""

Böylece karakter dizisini başlatan işaret ‘Bugün sinemaya gidiyorum,’ cümlesinin başındaki ve sonundaki işaretlerden farklı olduğu için, Python okuma esnasında bu cümleye takılmaz ve doğru bir şekilde, karakter dizisini kapatan tırnak işaretini bulabilir.

Bu yöntem tamamen geçerli ve mantıklıdır. Ama eğer istersek, aynı karakter dizisini çift tırnakla tanımlayıp, yine de hata almayı engelleyebiliriz. Peki ama nasıl?

İşte burada ‘kaçış dizileri’ adı verilen birtakım araçlardan faydalanacağız.

Peki nedir bu ‘kaçış dizisi’ denen şey?

Kaçış dizileri, Python’da özel anlam taşıyan işaret veya karakterleri, sahip oldukları bu özel anlam dışında bir amaçla kullanmamızı sağlayan birtakım araçlardır. Mesela yukarıda da örneklerini verdiğimiz gibi, tırnak işaretleri Python açısından özel anlam taşıyan işaretlerdir. Normalde Python bu işaretleri karakter dizilerini tanımlamak için kullanır. Ama eğer siz mesela bir metin içinde bu tırnak işaretlerini farklı bir amaçla kullanacaksanız Python’ı bu durumdan haberdar etmeniz gerekiyor. İşte kaçış dizileri, Python’ı böyle bir durumdan haberdar etmemize yarayan araçlardır.

Python’da pek çok kaçış dizisi bulunur. Biz burada bu kaçış dizilerini tek tek inceleyeceğiz. O halde hemen işe koyulalım.

Ters Taksim (\)¶

Yukarıda verdiğimiz örneklerde, çift tırnakla gösterdiğimiz karakter dizilerinin içinde de çift tırnak işareti kullanabilmek için birkaç farklı yöntemden yararlanabildiğimizi öğrenmiştik. Buna göre, eğer bir karakter dizisi içinde çift tırnak işareti geçiyorsa, o karakter dizisini tek tırnakla; eğer tek tırnak geçiyorsa da o karakter dizisini çift tırnakla tanımlayarak bu sorunun üstesinden gelebiliyorduk. Ama daha önce de söylediğimiz gibi, ‘kaçış dizileri’ adı verilen birtakım araçları kullanarak, mesela içinde çift tırnak geçen karakter dizilerini yine çift tırnakla tanımlayabiliriz.

Dilerseniz, kaçış dizisi kavramını açıklamaya geçmeden önce bununla ilgili birkaç örnek verelim. Bu sayede ne ile karşı karşıya olduğumuz, zihnimizde biraz daha belirginleşebilir:

>>> print('Yarın Adana\'ya gidiyorum.')Yarın Adana'ya gidiyorum.

Bir örnek daha verelim:

>>> print("\"book\" kelimesi Türkçede \"kitap\" anlamına gelir.")"book" kelimesi Türkçede "kitap" anlamına gelir.

Burada da cümle içinde çift tırnak işaretlerini kullandığımız halde, \ işaretleri sayesinde karakter dizilerini yine çift tırnakla tanımlayabildik.

Bir de şu örneğe bakalım:

>>> print("Python programlama dilinin adı \"piton\" yılanından gelmez")

Bütün bu örneklerde, karakter dizisini hem çift tırnakla tanımlayıp hem de karakter dizisi içinde çift tırnak işaretlerini kullandığımız halde, herhangi bir hata almadığımızı görüyorsunuz. Yukarıdaki kodlarda hata almamızı önleyen şeyin \ işareti olduğu belli. Ama dilerseniz bu işaretin, hata almamızı nasıl önlediğini anlatmadan önce son bir örnek daha verelim.

Hatırlarsanız önceki sayfalarda şöyle bir karakter dizisi ile karşılaşmıştık:

>>> print('İstanbul'un5günlükhavadurumutahmini') File "<stdin>", line 1print('İstanbul'un5günlükhavadurumutahmini')^SyntaxError: invalid syntax

Burada da ‘İstanbul’un’ kelimesi içinde geçen tırnak işareti nedeniyle karakter dizisini tek tırnak kullanarak tanımlayamıyorduk. Bu karakter dizisini hatasız bir şekilde tanımlayabilmek için ya çift tırnak ya da üç tırnak kullanmamız gerekiyordu:

>>> print("İstanbul'un 5 günlük hava durumu tahmini")İstanbul'un 5 günlük hava durumu tahmini

… veya:

>>> print("""İstanbul'un 5 günlük hava durumu tahmini""")İstanbul'un 5 günlük hava durumu tahmini

Tıpkı önceki örneklerde olduğu gibi, yukarıdaki karakter dizisini de aslında tek tırnakla tanımlayıp hata oluşmasını önleyebiliriz. Hemen görelim:

>>> print('İstanbul\'un 5 günlük hava durumu tahmini')İstanbul'un 5 günlük hava durumu tahmini

Bütün örneklerde \ işaretini kullandığımızı görüyorsunuz. İşte bu tür işaretlere Python’da kaçış dizisi (escape sequence) adı verilir. Bu işaretler karakter dizilerini tanımlarken oluşabilecek hatalardan kaçmamızı sağlar. Peki bu \ işareti nasıl oluyor da karakter dizisini tanımlarken hata almamızı önlüyor? Gelin bu süreci adım adım tarif edelim:

Python bir karakter dizisi tanımladığımızda, karakter dizisini soldan sağa doğru okumaya başlar. Mesela yukarıdaki örnekte ilk olarak karakter dizisini tanımlamaya tek tırnakla başladığımızı görür.

Python karakter dizisini başlatan bu tek tırnak işaretini gördüğü zaman, soldan sağa doğru ilerleyerek karakter dizisini bitirecek olan tek tırnak işaretini aramaya başlar.

Soldan sağa doğru ilerlerken ‘İstanbul’un’ kelimesi içinde geçen kesme işaretini görür ve karakter dizisinin burada sona erdiğini düşünür. Ancak karakter dizisini sona erdiren işaret bu olmadığı için Python’ın hata vermekten başka çaresi kalmaz.

İşte biz ‘İstanbul’un’ kelimesi içinde geçen bu kesme işaretinin sol tarafına bir adet \ işareti yerleştirerek Python’a, ‘Aradığın işaret bu değil. Sen karakter dizisini okumaya devam et. Biraz sonra aradığın tırnağı bulacaksın!’ mesajı vermiş, yani orada tırnak işaretini farklı bir amaçla kullandığımız konusunda Python’ı bilgilendirmiş oluruz.

Şurada da aynı durum sözkonusu:

>>> print("Python programlama dilinin adı \"piton\" yılanından gelmez")

Tıpkı bir önceki örnekte olduğu gibi, burada da Python karakter dizisini soldan sağa doğru okumaya başlıyor, karakter dizisini başlatan çift tırnak işaretini görüyor ve bunun üzerine Python karakter dizisini bitirecek olan çift tırnak işaretini aramaya koyuluyor.

Karakter dizisini soldan sağa doğru okuduğu sırada, karakter dizisi içinde geçen ‘piton’ kelimesini görüyor. Eğer burada bir önlem almazsak Python bu kelimenin başındaki çift tırnak işaretini, karakter dizisini sona erdiren tırnak olarak algılar ve durum aslında böyle olmadığı için de hata verir.

Bu hatayı önlemek için ‘piton’ kelimesinin başındaki çift tırnağın soluna bir adet \ işareti yerleştirerek Python’a, ‘Aradığın tırnak bu değil!’ mesajı veriyoruz. Yani bir bakıma, \ adlı kaçış dizisi kendisini tırnak işaretine siper edip Python’ın bu tırnağı görmesine mani oluyor…

Bunun üzerine Python bu çift tırnak işaretini görmezden gelerek, soldan sağa doğru okumaya devam eder ve yol üzerinde ‘piton’ kelimesinin sonundaki çift tırnak işaretini görür. Eğer burada da bir önlem almazsak Python yine bir hata verecektir.

Tıpkı biraz önce yaptığımız gibi, bu tırnak işaretinin de soluna bir adet \ işareti yerleştirerek Python’a, ‘Aradığın tırnak bu da değil. Sen yine okumaya devam et!’ mesajı veriyoruz.

Bu mesajı alan Python karakter dizisini soldan sağa doğru okumaya devam ediyor ve sonunda karakter dizisini bitiren çift tırnak işaretini bularak bize hatasız bir çıktı veriyor.

Böylece \ işareti üzerinden hem kaçış dizilerinin ne olduğunu öğrenmiş, hem de bu kaçış dizisinin nasıl kullanılacağına dair örnekler vermiş olduk. Ancak \ kaçış dizisinin yetenekleri yukarıdakilerle sınırlı değildir. Bu kaçış dizisini, uzun karakter dizilerini bölmek için de kullanabiliriz. Şimdi şu örneği dikkatlice inceleyin:

>>> print("Python yılında Guido Van Rossum \ tarafından geliştirilmeye başlanmış, oldukça \ güçlü ve yetenekli bir programlama dilidir.")Python yılında Guido Van Rossum tarafından geliştirilmeyebaşlanmış, oldukça güçlü ve yetenekli bir programlama dilidir.

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:

>>> print("Python yılında Guido Van Rossum File "<stdin>", line 1print("Python yılında Guido Van Rossum^SyntaxError: EOL while scanning string literal

İş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ı üç tırnak işaretlerinde şahit olduğumuz gibi, hata vermeden bir alt satıra geçecektir. Bu sırada, yani \ kaçış dizisini koyup Enter tuşuna bastığımızda >>> işaretinin işaretine dönüştüğünü görüyorsunuz. Bu işaretin, Python’ın bize verdiği bir ‘Yazmaya devam et!’ mesajı olduğunu biliyorsunuz.

Satır Başı (\n)¶

Python’daki en temel kaçış dizisi biraz önce örneklerini verdiğimiz \ işaretidir. Bu kaçış dizisi başka karakterlerle birleşerek, farklı işlevlere sahip yeni kaçış dizileri de oluşturabilir. Aslında bu olguya yabancı değiliz. Önceki sayfalarda bu duruma bir örnek vermiştik. Hatırlarsanız fonksiyonunu anlatırken end parametresinin ön tanımlı değerinin \n, yani satır başı karakteri olduğunu söylemiştik.

Not

Satır başı karakterine ‘yeni satır karakteri’ dendiği de olur.

Satır başı karakterini ilk öğrendiğimizde bu karakteri anlatırken bazı örnekler de vermiştik:

>>> print("birinci satır\nikinci satır\nüçüncü satır")birinci satırikinci satırüçüncü satır

Gördüğünüz gibi, \n adlı kaçış dizisi, bir alt satıra geçilmesini sağlıyor. İşte aslında \n kaçış dizisi de, \ ile ‘n’ harfinin birleşmesinden oluşmuş bir kaçış dizisidir. Burada \ işaretinin görevi, ‘n’ harfinin özel bir anlam kazanmasını sağlamaktır. \ işareti ile ‘n’ harfi birleştiğinde ‘satır başı karakteri’ denen özel bir karakter dizisi ortaya çıkarıyor.

Gelin bu kaçış dizisi ile ilgili bir örnek verelim. Şimdi şu kodları dikkatlice inceleyin:

>>> başlık="Türkiye'de Özgür Yazılımın Geçmişi">>> print(başlık,"\n","-"*len(başlık),sep="")Türkiye'de Özgür Yazılımın Geçmişi

Burada, başlık adlı değişkenin tuttuğu “Türkiye’de Özgür Yazılımın Geçmişi” adlı karakter dizisinin altını çizdik. Dikkat ederseniz, başlığın altına koyduğumuz çizgiler başlığın uzunluğunu aşmıyor. Yazdığımız program, başlığın uzunluğu kadar çizgiyi başlığın altına ekliyor. Bu programda başlık ne olursa olsun, programımız çizgi uzunluğunu kendisi ayarlayacaktır. Örneğin:

>>> başlık="Python Programlama Dili">>> print(başlık,"\n","-"*len(başlık),sep="")Python Programlama Dili>>> başlık="Alışveriş Listesi">>> print(başlık,"\n","-"*len(başlık),sep="")Alışveriş Listesi

Gelin isterseniz bu kodlardaki satırını şöyle bir inceleyelim. Kodumuz şu:

>>> print(başlık,"\n","-"*len(başlık),sep="")

Burada öncelikle başlık adlı değişkeni fonksiyonunun parantezleri içine yazdık. Böylece başlık değişkeninin değeri ekrana yazdırılacak.

fonksiyonunun ikinci parametresinin \n adlı kaçış dizisi olduğunu görüyoruz. Bu kaçış dizisini eklememiz sayesinde Python ilk parametreyi çıktı olarak verdikten sonra bir alt satıra geçiyor. Bu parametrenin tam olarak ne işe yaradığını anlamak için, yukarıdaki satırı bir de o parametre olmadan çalıştırmayı deneyebilirsiniz:

>>> print(başlık,"-"*len(başlık),sep="")Alışveriş Listesi

fonksiyonunun üçüncü parametresinin ise şu olduğunu görüyoruz: .

İşte başlık değişkeninin altına gerekli sayıda çizgiyi çizen kodlar bunlardır. Burada fonksiyonunu nasıl kullandığımıza çok dikkat edin. Bu kod sayesinde başlık değişkeninin uzunluğu () sayısınca - işaretini ekrana çıktı olarak verebiliyoruz.

Yukarıdaki kodlarda fonksiyonunun son parametresi ise sep=’’. Peki bu ne işe yarıyor? Her zaman olduğu gibi, bu kod parçasının ne işe yaradığını anlamak için programı bir de o kodlar olmadan çalıştırmayı deneyebilirsiniz:

>>> print(başlık,"\n","-"*len(başlık))Alışveriş Listesi

Gördüğünüz gibi, başlık değişkeninin tam altına gelmesi gereken çizgi işaretleri sağa kaymış. Bunun nedeni sep parametresinin öntanımlı değerinin bir adet boşluk karakteri olmasıdır. sep parametresinin öntanımlı değeri nedeniyle çizgilerin baş tarafına bir adet boşluk karakteri ekleniyor çıktıda. O yüzden bu çizgiler sağa kaymış görünüyor. İşte biz yukarıdaki kodlarda sep parametresinin öntanımlı değerini değiştirip, boşluk karakteri yerine boş bir karakter dizisi yerleştiriyoruz. Böylece çizgiler çıktıda sağa kaymıyor.

Satır başı karakteri, programlama maceramız sırasında en çok kullanacağımız kaçış dizilerinden biri ve hatta belki de birincisidir. O yüzden bu kaçış dizisini çok iyi öğrenmenizi tavsiye ederim.

Ayrıca bu kaçış dizisini (ve tabii öteki kaçış dizilerini) tanıyıp öğrenmeniz, yazacağınız programların selameti açısından da büyük önem taşır. Eğer bir karakter dizisi içinde geçen kaçış dizilerini ayırt edemezseniz Python size hiç beklemediğiniz çıktılar verebilir. Hatta yazdığınız programlar kaçış dizilerini tanımıyor olmanızdan ötürü bir anda hata verip çökebilir. Peki ama nasıl?

Şimdi şu örneğe dikkatlice bakın:

Diyelim ki bilgisayarınızın ‘C:\’ dizinindeki ‘nisan’ adlı bir klasörün içinde yer alan seafoodplus.info adlı bir dosyayı yazdığınız bir program içinde kullanmanız gerekiyor. Mesela bu dosyayı, tam adresiyle birlikte kullanıcılarınıza göstermek istiyorsunuz.

İlk denememizi yapalım:

>>> print("C:\nisan\seafoodplus.info")

Buradan şöyle bir çıktı aldık:

Gördüğünüz gibi, bu çıktıyı normal yollardan vermeye çalıştığımızda Python bize hiç de beklemediğimiz bir çıktı veriyor. Peki ama neden?

Python’da karakter dizileri ile çalışırken asla aklımızdan çıkarmamamız gereken bir şey var: Eğer yazdığımız herhangi bir karakter dizisinin herhangi bir yerinde \ işaretini kullanmışsak, bu işaretten hemen sonra gelen karakterin ne olduğuna çok dikkat etmemiz gerekir. Çünkü eğer dikkat etmezsek, farkında olmadan Python için özel anlam taşıyan bir karakter dizisi oluşturmuş olabiliriz. Bu da kodlarımızın beklediğimiz gibi çalışmasını engeller.

Yukarıdaki sorunun kaynağını anlamak için adlı karakter dizisine çok dikkatlice bakın. Python bu karakter dizisinde bizim ‘\nisan’ olarak belirttiğimiz kısmın başındaki \n karakterlerini bir kaçış dizisi olarak algıladı. Çünkü \n adlı karakter dizisi, ‘satır başı kaçış dizisi’ adını verdiğimiz, Python açısından özel anlam taşıyan bir karakter dizisine işaret ediyor. Zaten yukarıdaki tuhaf görünen çıktıya baktığınızda da, bu kaçış dizisinin olduğu noktadan itibaren karakter dizisinin bölünüp yeni bir satıra geçildiğini göreceksiniz. İşte biz yukarıdaki örnekte alelade bir dizin adı belirttiğimizi zannederken aslında hiç farkında olmadan bir kaçış dizisi üretmiş oluyoruz. Bu nedenle, daha önce de söylediğimiz gibi, karakter dizileri içinde farkında olarak veya olmayarak kullandığımız kaçış dizilerine karşı her zaman uyanık olmalıyız. Aksi takdirde, yukarıda olduğu gibi hiç beklemediğimiz çıktılarla karşılaşabiliriz.

Esasen yukarıdaki problem bir dereceye kadar (ve yerine göre) ‘masum bir kusur’ olarak görülebilir. Çünkü bu hata programımızın çökmesine yol açmıyor. Ama bir karakter dizisi içindeki gizli kaçış dizilerini gözden kaçırmak, bazı durumlarda çok daha yıkıcı sonuçlara yol açabilir. Mesela yukarıdaki sorunlu dizin adını ekrana yazdırmak yerine fonksiyonunu kullanarak, bu karakter dizisi içinde belirttiğimiz seafoodplus.info adlı dosyayı açmaya çalıştığımızı düşünün:

>>> open("C:\nisan\seafoodplus.info")Traceback (most recent call last): File "<stdin>", line 1, in <module>OSError: [Errno 22] Invalid argument: 'C:\nisan\\seafoodplus.info'

Eğer sorunun gözden kaçan bir kaçış dizisinden kaynaklandığını farkedemezseniz, bu sorunu çözebilmek için saatlerinizi ve hatta günlerinizi harcamak zorunda kalabilirsiniz. Çünkü yukarıdaki hata mesajı sorunun nedenine dair hiçbir şey söylemiyor. 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.

Diyelim ki sorunun ‘\nisan’ ifadesinin başındaki \n karakterlerinin Python tarafından bir kaçış dizisi olarak algılanmasından kaynaklandığını farkettiniz. Peki bu sorunu nasıl çözeceksiniz?

Bu sorunun birkaç farklı çözüm yolu var. Biz şimdilik sadece ikisini göreceğiz. Bu bölümün sonuna vardığınızda öteki çözüm yolunu da öğrenmiş olacaksınız.

Yukarıdaki problemi, ilgili kaçış dizisi içindeki ters taksim işaretini çiftleyerek çözebilirsiniz:

>>> open("C:\\nisan\masraflar")

Tabii tutarlılık açısından karakter dizisi içindeki bütün ters taksim işaretlerini çiftlemek mantıklı olacaktır:

>>> open("C:\\nisan\\masraflar")

Bunun dışında, bu örnek için, dizin adlarını ters taksim yerine düz taksim işaretiyle ayırmayı tercih edebilirsiniz:

>>> open("C:/nisan/masraflar")

Dediğimiz gibi, üçüncü (ve aslında daha kullanışlı olan) yöntemi biraz sonra inceleyeceğiz. Biz şimdilik kaçış dizilerini anlatmaya devam edelim.

Sekme (\t)¶

Python’da \ işareti sadece ‘n’ harfiyle değil, başka harflerle de birleşebilir. Örneğin \ işaretini ‘t’ harfiyle birleştirerek yine özel bir anlam ifade eden bir kaçış dizisi elde edebiliriz:

>>> print("abc\tdef")abc def

Burada \t adlı kaçış dizisi, “abc” ifadesinden sonra sanki Tab (sekme) tuşuna basılmış gibi bir etki oluşturarak “def” ifadesini sağa doğru itiyor. Bir de şu örneğe bakalım:

>>> print("bir","iki","üç",sep="\t")bir iki üç

Bir örnek daha:

>>> print(*"",sep="\t")1 2 3 4 5 6 7 8 9

Gördüğünüz gibi, parametreler arasında belli aralıkta bir boşluk bırakmak istediğimizde \t adlı kaçış dizisinden yararlanabiliyoruz.

Tıpkı \n kaçış dizisinde olduğu gibi, karakter dizilerinde \t kaçış dizisinin varlığına karşı da uyanık olmalıyız:

>>> open("C:\nisan\masraflar\toplam_seafoodplus.info")Traceback (most recent call last): File "<stdin>", line 1, in <module>OSError: [Errno 22] Invalid argument: 'C:\nisan\\masraflar\toplam_seafoodplus.info'

Burada da \n ile yaşadığımız soruna benzer bir durum var. Biz toplam_seafoodplus.info adlı bir dosyaya atıfta bulunmaya çalışıyoruz, ama Python bu ifadenin başındaki ‘t’ harfinin, kendisinden önce gelen \ işareti ile birleşmesinden ötürü, bunu \t kaçış dizisi olarak algılıyor ve ona göre davranıyor.

Belki yukarıdaki kodları şöyle yazarsak durumu anlamak daha kolay olabilir:

>>> print("C:\nisan\masraflar\toplam_seafoodplus.info")C:isan\masraflar oplam_seafoodplus.info

Gördüğünüz gibi, Python \n kaçış dizisini gördüğü noktada alt satırın başına geçiyor ve \t kaçış dizisini gördüğü noktada da önceki ve sonraki öğeler arasında bir sekme boşluğu bırakıyor. Bu durumu engellemek için ne yapmanız gerektiğini biliyorsunuz: Ya ters taksim işaretlerini çiftleyeceksiniz:

>>> print("C:\\nisan\\masraflar\\toplam_seafoodplus.info")

Ya da dizin adı ayracı olarak düz taksim işaretini kullanacaksınız:

>>> print("C:/nisan/masraflar/toplam_seafoodplus.info")

Daha önce de söylediğimiz gibi, üçüncü ve daha pratik olan yolu biraz sonra göreceğiz. Şimdilik sadece biraz sabır…

Zil Sesi (\a)¶

\ işaretinin birleştiğinde farklı bir anlam türettiği bir başka harf de ‘a’ harfidir. \ işareti ‘a’ harfiyle birleşerek !bip! benzeri bir zil sesi üretilmesini sağlayabilir:

>>> print("\a")!bip!

İsterseniz yukarıdaki komutu şu şekilde yazarak, kafa şişirme katsayısını artırabilirsiniz:

>>> print("\a"*10)

Bu şekilde !bip! sesi 10 kez tekrar edilecektir. Ancak bu kaçış dizisi çoğunlukla sadece Windows üzerinde çalışacaktır. Bu kaçış dizisinin GNU/Linux üzerinde çalışma garantisi yoktur. Hatta bu kaçış dizisi bütün Windows sistemlerinde dahi çalışmayabilir. Dolayısıyla bu kaçış dizisinin işlevine bel bağlamak pek mantıklı bir iş değildir.

Tıpkı \n ve \t kaçış dizilerinde olduğu gibi bu kaçış dizisinin varlığına karşı da uyanık olmalıyız. Burada da mesela ‘C:\aylar’ gibi bir dizin adı tanımlamaya çalışırken aslında \a kaçış dizisini oluşturuyor olabilirsiniz farkında olmadan.

Aynı Satır Başı (\r)¶

Bu kaçış dizisi, bir karakter dizisinde aynı satırın en başına dönülmesini sağlar. Bu kaçış dizisinin işlevini tanımına bakarak anlamak biraz zor olabilir. O yüzden dilerseniz bu kaçış dizisinin ne işe yaradığını bir örnek üzerinde göstermeye çalışalım:

>>> print("Merhaba\rZalim Dünya!")Zalim Dünya!

Burada olan şey şu: Normal şartlar altında, fonksiyonu içine yazdığımız bir karakter dizisindeki bütün karakterler soldan sağa doğru tek tek ekrana yazdırılır:

>>> print("Merhaba Zalim Dünya!")Merhaba Zalim Dünya!

Ancak eğer karakter dizisinin herhangi bir yerine \r adlı kaçış dizisini yerleştirirsek, bu kaçış dizisinin bulunduğu konumdan itibaren aynı satırın başına dönülecek ve \r kaçış dizisinden sonra gelen bütün karakterler satır başındaki karakterlerin üzerine yazacaktır. Şu örnek daha açıklayıcı olabilir:

>>> print("Merhaba\rDünya")Dünyaba

Burada, “Merhaba” karakter dizisi ekrana yazdırıldıktan sonra \r kaçış dizisinin etkisiyle 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.

Önceki kaçış dizilerinde olduğu gibi, bu kaçış dizisini de farkında olmadan karakter dizisi içinde kullanırsanız beklemediğiniz çıktılar alırsınız:

>>> print("C:\ülke\türkiye\iller\rize\nüseafoodplus.info")izeülke ürkiye\illerüseafoodplus.info

Burada farkında olmadan sadece bir değil, üç kaçış dizisi birden oluşturduk!

Düşey Sekme (\v)¶

Eğer \ işaretini ‘v’ harfiyle birlikte kullanırsak düşey sekme denen şeyi elde ederiz. Hemen bir örnek verelim:

>>> print("düşey\vsekme")düşey sekme

Yalnız bu \v adlı kaçış dizisi her işletim sisteminde çalışmayabilir. Dolayısıyla, birden fazla platform üzerinde çalışmak üzere tasarladığınız programlarınızda bu kaçış dizisini kullanmanızı önermem.

İmleç Kaydırma (\b)¶

\ kaçış dizisinin, biraraya geldiğinde özel bir anlam kazandığı bir başka harf de b’dir. \b kaçış dizisinin görevi, imleci o anki konumundan sola kaydırmaktır. Bu tanım pek anlaşılır değil. O yüzden bir örnek verelim:

>>> print("seafoodplus.info\b")

Bu kodu çalıştırdığınızda herhangi bir değişiklik görmeyeceksiniz. Ama aslında en sonda gördüğümüz \b kaçış dizisi, imleci bir karakter sola kaydırdı. Dikkatlice bakın:

>>> print("seafoodplus.info\seafoodplus.info")

Gördüğünüz gibi, \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. Dolayısıyla biz de şu çıktıyı aldık:

Bir örnek daha verelim…

Bildiğiniz gibi, fonksiyonu, kendisine verilen parametreler arasına birer boşluk yerleştirir:

>>> print('istihza','.','com')istihza . com

Biz bu öğeleri birbirine bitiştirmek için şöyle bir yol izleyebileceğimizi biliyoruz:

>>> print('istihza','.','com',sep='')seafoodplus.info

İşte aynı etkiyi \b kaçış dizisini kullanarak da elde edebiliriz:

>>> print('istihza','\b.','\bcom')seafoodplus.info

Gördüğünüz gibi, \b kaçış dizisi, ‘.’ ve ‘com’ parametrelerinden önce imleci birer karakter sola kaydırdığı için, parametreler arasındaki boşluk karakterleri ortadan kalktı.

Bu kaçış dizisini kullanarak şöyle gereksiz işler peşinde de koşabilirsiniz:

>>> print('istihza\b\b\bsn')istisna

Burada \b kaçış dizisini üst üste birkaç kez kullanarak imleci birkaç karakter sola kaydırdık ve ‘sn’ harflerini ‘hz’ harflerinin üzerine bindirdik. Böylece ‘istihza’ kelimesi ‘istisna’ kelimesine dönüşmüş oldu…

Daha fazla uzatmadan, bu kaçış dizisinin Python’da çok nadir kullanıldığı bilgisini vererek yolumuza devam edelim…

Küçük Unicode (\u)¶

Tıpkı bundan önceki kaçış dizileri gibi, karakter dizileri içindeki varlığı konusunda dikkatli olmamız gereken bir başka kaçış dizisi de \u adlı kaçış dizisidir. Eğer bu kaçış dizisini tanımaz ve dikkatli kullanmazsak, yazdığımız programlar tespit etmesi çok güç hatalar üretebilir.

Örneğin şöyle bir çıktı vermek istediğinizi düşünün:

Dosya konumu: C:\users\zeynep\gizli\seafoodplus.info

Bu çıktıyı normal yollardan vermeye çalışırsak Python bize bir hata mesajı gösterecektir:

>>> print("Dosya konumu: C:\users\zeynep\gizli\seafoodplus.info") File "<stdin>", line 1SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes inposition truncated \uXXXX escape

Belki sağda solda ‘UNICODE’ diye bir şey duymuşsunuzdur. Eğer şimdiye kadar böyle bir şey duymadıysanız veya duyduysanız bile ne olduğunu bilmiyorsanız hiç ziyanı yok. Birkaç bölüm sonra bunun ne anlama geldiğini bütün ayrıntılarıyla anlatacağız. Biz şimdilik sadece şunu bilelim: UNICODE, karakterlerin, harflerin, sayıların ve bilgisayar ekranında gördüğümüz öteki 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:

Aynı şekilde ‘a’ harfi bu sistemde şu kod konumu ile gösterilir:

Python programlama dilinde ise, yukarıdaki kod konumu düzeni şöyle gösterilir:

Gördüğünüz gibi, Python UNICODE sistemindeki her bir kod konumunu gösterebilmek için, önce \u şeklinde bir kaçış dizisi tanımlıyor, ardından UNICODE sisteminde + işaretinden sonra gelen sayıyı bu kaçış dizisinin hemen sağına ekliyor. Gelin kendi kendimize birkaç deneme çalışması yapalım:

>>> '\u''İ'>>> '\u''p'>>> "\ufdsf" File "<stdin>", line 1SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes inposition truncated \uXXXX escape

Gördüğünüz gibi, eğer \u kaçış dizisinden sonra doğru bir kod konumu belirtmezsek Python bize bir hata mesajı gösteriyor…

Bu hata mesajının, biraz önce kodunu yazdıktan sonra aldığımız hata ile aynı olduğuna dikkat edin. Tıpkı \ufdsf örneğinde olduğu gibi, \users ifadesi de varolan bir UNICODE kod konumuna karşılık gelmediği için, Python’ın hata vermekten başka çaresi kalmıyor.

Biz bu örnekte ‘users’ kelimesini kullanmaya çalışıyoruz, ama ‘u’ harfinden hemen önce gelen \ kaçış dizisi nedeniyle, hiç farkında olmadan Python açısından önemli bir karakter dizisi (\u) meydana getirmiş oluyoruz. O yüzden, böyle can sıkıcı hatalarla karşılaşmamak için olası kaçış dizilerine karşı her zaman uyanık olmamız gerekiyor.

Peki biz bu kaçış dizisi yüzünden, yazdığımız programlarda Dosya konumu: C:\users\zeynep\gizli\seafoodplus.info”) gibi bir çıktı veremeyecek miyiz?

Verebileceğimizi ve bunun bir yolu yordamı olduğunu biliyorsunuz:

>>> print("Dosya konumu: C:\\users\\zeynep\\gizli\\seafoodplus.info")Dosya konumu: C:\users\zeynep\gizli\seafoodplus.info

Gördüğünüz gibi, karakter dizisi içinde geçen bütün \ işaretlerini çiftleyerek sorunumuzu çözdük. Buradaki gibi bir sorunla karşılaşmamak için, dizin adlarını ayırırken ters taksim işareti yerine düz taksim işaretini kullanmayı da tercih edebilirsiniz:

>>> print("Dosya konumu: C:/users/zeynep/gizli/seafoodplus.info")

Biraz sonra bu sorunu halletmenin üçüncü ve daha kolay bir yönteminden daha söz edeceğiz. Ama biz şimdilik bu kaçış dizisini bir kenara bırakıp başka bir kaçış dizisini incelemeye geçelim.

Büyük Unicode (\U)¶

Bu kaçış dizisi biraz önce gördüğümüz \u adlı kaçış dizisiyle hemen hemen aynı anlama gelir. Bu kaçış dizisi de, tıpkı \u gibi, UNICODE kod konumlarını temsil etmek için kullanılır. Ancak U ile gösterilen kod konumları u ile gösterilenlere göre biraz daha uzundur. Örneğin, hatırlarsanız u kaçış dizisini kullanarak ‘ı’ harfinin UNICODE kod konumunu şöyle temsil ediyorduk:

>>> '\u''ı'

Eğer aynı kod konumunu U adlı kaçış dizisi ile göstermek istersek şöyle bir şey yazmamız gerekir:

>>> '\U'

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 yazıyorduk. İşte \u kaçış dizisi ile U kaçış dizisi arasındaki fark budur. u kaçış dizisi hakkında söylediğimiz öteki her şey U kaçış dizisi için de geçerlidir.

Uzun Ad (\N)¶

UNICODE sistemi ile ilgili bir başka kaçış dizisi de \N adlı kaçış dizisidir.

Dediğimiz gibi, UNICODE sistemine ilişkin ayrıntılardan ilerleyen derslerde söz edeceğiz, ama bu sistemle ilgili ufak bir bilgi daha verelim.

UNICODE sisteminde her karakterin tek ve benzersiz bir kod konumu olduğu gibi, tek ve benzersiz bir de uzun adı vardır. Örneğin ‘a’ harfinin UNICODE sistemindeki uzun adı şudur:

Bir karakterin UNICODE sistemindeki uzun adını öğrenmek için unicodedata adlı bir modülden yararlanabilirsiniz:

>>> importunicodedata>>> seafoodplus.info('a')LATIN SMALL LETTER A>>> seafoodplus.info('Ş')LATIN CAPITAL LETTER S WITH CEDILLA

Bu arada, daha önce de söylediğimiz gibi, bu ‘modül’ kavramına şimdilik takılmayın. İlerde modülleri ayrıntılı olarak inceleyeceğiz. Şimdilik unicodedata denen şeyin, (tıpkı daha önce örneklerini gördüğümüz os, sys ve keyword gibi) bir modül olduğunu ve bu modül içindeki name adlı bir fonksiyonu kullanarak, parantez içinde belirttiğimiz herhangi bir karakterin UNICODE sistemindeki uzun adını elde edebileceğimizi bilelim yeter.

İşte \N kaçış dizisi bu uzun isimleri, Python programlarımızda kullanma imkanı verir bize. Bu kaçış dizisini, karakterlerin UNICODE sistemindeki uzun adları ile birlikte kullanarak asıl karakterleri elde edebiliriz. Dikkatlice bakın:

>>> print("\N{LATIN SMALL LETTER A}")a>>> print("\N{LATIN CAPITAL LETTER S WITH CEDILLA}")Ş>>> print("\Nisan") File "<stdin>", line 1SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes inposition malformed \N character escape

Gördüğünüz gibi, herhangi bir karşılığı olmayan bir uzun ad belirttiğimizde Python bize bir hata mesajı gösteriyor. Çünkü Python \N kaçış dizisinin hemen ardından { işaretinin getirilmesini ve sonra da UNICODE sistemi dahilinde geçerli bir uzun ad belirtilmesini bekliyor. Yukarıdaki örnekte \N kaçış dizisinden sonra { işareti yok. Zaten \N kaçış dizisinin hemen ardından gelen ‘isan’ ifadesi de doğru bir uzun ada işaret etmiyor. Dolayısıyla da Python’ın bize hata mesajı göstermekten başka çaresi kalmıyor…

\u, \U ve \N kaçış dizileri, UNICODE sistemi ile ilgili çalışmalar yapmak isteyen programcılar için Python programlama dilinin sunduğu faydalı araçlardan yalnızca birkaçıdır. Ancak bu araçların sizin işinize yaramayacağını asla düşünmeyin. Zira \u, \U ve \N kaçış dizileri ile ilgili yukarıdaki durum hiç beklemediğiniz bir anda sizi de vurabilir. Çünkü bu kaçış dizilerinin oluşturduğu risk hiç de öyle nadir karşılaşılacak bir sorun değildir.

Bildiğiniz gibi Windows 7’de kullanıcının dosyalarını içeren dizin adı C:\Users\kullanıcı_adı şeklinde gösteriliyor. Dolayısıyla Windows kullananlar UNICODE kaçış dizilerinden kaynaklanan bu tuzağa her an düşebilir. Ya da eğer adınız ‘u’ veya ‘n’ harfi ile başlıyorsa yine bu tuzağa düşme ihtimaliniz epey yüksek olacak, C:\Users\umut veya C:\Users\Nihat gibi bir dizin adı belirtirken çok dikkatli olmanız gerekecektir. Zira özellikle dosyalar üzerinde işlem yaparken, bu tür dizin adlarını sık sık kullanmak durumunda kalacaksınız. Bu yüzden, alelade bir kelime yazdığınızı zannederken hiç farkında olmadan bir kaçış dizisi tanımlıyor olma ihtimalini her zaman göz önünde bulundurmalı ve buna uygun önlemleri almış olmalısınız.

Onaltılı Karakter (\x)¶

‘x’ harfi de \ işareti ile birleştiğinde özel anlam kazanarak bir kaçış dizisi meydana getirir.

\x kaçış dizisini kullanarak, onaltılı (hexadecimal) sayma sistemindeki bir sayının karakter karşılığını gösterebilirsiniz. Dikkatlice bakın:

>>> "\x41"'A'

Onaltılı sayma sistemindeki 41 sayısı ‘A’ harfine karşılık gelir. Eğer hangi karakterlerin hangi sayılara karşılık geldiğini merak ediyorsanız seafoodplus.info adresindeki tabloyu inceleyebilirsiniz. Bu tabloda ‘hex’ sütunu altında gösterilen sayılar onaltılı sayılar olup, ‘symbol’ sütununda gösterilen karakterlere karşılık gelirler. Örneğin ‘hex’ sütunundaki 4E sayısı ‘symbol’ sütunundaki ‘N’ harfine karşılık gelir. Bu durumu Python’la da teyit edebilirsiniz:

>>>"\x4E"N

Eğer sayılarla karakterler arasındaki bağlantının tam olarak ne olduğunu bilmiyorsanız hiç endişe etmeyin. Birkaç bölüm sonra sayılarla karakterler arasında nasıl bir bağ olduğunu gayet ayrıntılı bir şekilde anlatacağız. Biz şimdilik yalnızca \x karakter dizisinin özel bir kaçış dizisine karşılık geldiğini ve bu kaçış dizisini karakter dizileri içinde kullanırken dikkatli olmamız gerektiğini bilelim yeter:

>>> print("C:\Users\Ayşe\xp_dosyaları") File "<stdin>", line 1SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes inposition truncated \UXXXXXXXX escape

Gördüğünüz gibi, Python \x ifadesinden sonra onaltılı bir sayı belirtmenizi bekliyor. Halbuki biz burada \x ifadesini ‘xp_dosyaları’ adlı dizini gösterebilmek için kullanmıştık. Ama görünüşe göre yanlışlıkla Python için özel bir anlam ifade eden bir karakter dizisi oluşturmuşuz…

Etkisizleştirme (r)¶

Dediğimiz gibi, Python’daki en temel kaçış dizisi \ işaretidir. Bu işaret bazı başka harflerle birleşerek yeni kaçış dizileri de oluşturabilir.

Python’da \ işaretinin dışında temel bir kaçış dizisi daha bulunur. Bu kaçış dizisi ‘r’ harfidir. Şimdi bu kaçış dizisinin nasıl kullanılacağını ve ne işe yaradığını inceleyelim:

Şöyle bir çıktı vermek istediğimizi düşünün:

Kurulumdizini:C:\aylar\nisan\toplammasraf

Bildiğimiz yoldan bu çıktıyı vermeye çalışırsak neler olacağını adınız gibi biliyorsunuz:

>>> print("Kurulum dizini: C:\aylar\nisan\toplam masraf")Kurulum dizini: C:ylarisan oplam masraf

Not

Eğer Windows üzerinde çalışıyorsanız bu komutu verdikten sonra bir !bip! sesi de duymuş olabilirsiniz…

Python tabii ki, karakter dizisi içinde geçen ‘\aylar’, ‘\nisan’, ve ‘\toplam masraf’ ifadelerinin ilk karakterlerini yanlış anladı! \a, \n ve \t 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. Sonuç olarak da yukarıdaki gibi bir çıktı üretiyor.

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

Burada, \ işaretlerinin her birini çiftleyerek sorunun üstesinden geldik. Yukarıdaki yöntem doğru ve kabul görmüş bir çözümdür. Ama bu sorunun üstesinden gelmenin çok daha basit ve pratik bir yolu var. Bakalım:

>>> print(r"Kurulum dizini: C:\aylar\nisan\toplam masraf")Kurulum dizini: C:\aylar\nisan\toplam masraf

Gördüğünüz gibi, karakter dizisinin baş kısmının dış tarafına bir adet r harfi yerleştirerek sorunun üstesinden geliyoruz. Bu kaçış dizisinin, kullanım açısından öteki kaçış dizilerinden farklı olduğuna dikkat edin. Öteki kaçış dizileri karakter dizisinin içinde yer alırken, bu kaçış dizisi karakter dizisinin dışına yerleştiriliyor.

Bu kaçış dizisinin tam olarak nasıl işlediğini görmek için dilerseniz bir örnek daha verelim:

>>> print("Kaçış dizileri: \, \n, \t, \a, \\, r")Kaçış dizileri: \,, , , \, r

Burada da Python bizim yapmak istediğimiz şeyi anlayamadı ve karakter dizisi içinde geçen kaçış dizilerini doğrudan ekrana yazdırmak yerine bu kaçış dizilerinin işlevlerini yerine getirmesine izin verdi. Tıpkı biraz önceki örnekte olduğu gibi, istersek kaçış dizilerini çiftleyerek bu sorunu aşabiliriz:

>>> print("Kaçış dizileri: \\, \\n, \\t, \\a, \\\, r")Kaçış dizileri: \, \n, \t, \a, \\, r

Ama tabii ki bunun çok daha kolay bir yöntemi olduğunu biliyorsunuz:

>>> print(r"Kaçış dizileri: \, \n, \t, \a, \\, r")Kaçış dizileri: \, \n, \t, \a, \\, r

Gördüğünüz gibi, karakter dizisinin başına getirdiğimiz r kaçış dizisi, karakter dizisi içinde geçen kaçış dizilerinin işlevlerini yerine getirmesine engel olarak, istediğimiz çıktıyı elde etmemizi sağlıyor.

Bu arada bu kaçış dizisini, daha önce öğrendiğimiz \r adlı kaçış dizisi ile karıştırmamaya dikkat ediyoruz.

Python’daki bütün kaçış dizilerinden söz ettiğimize göre, konuyu kapatmadan önce önemli bir ayrıntıdan söz edelim.

Python’da karakter dizilerinin sonunda sadece çift sayıda \ işareti bulunabilir. Tek sayıda \ işareti kullanıldığında karakter dizisini bitiren tırnak işareti etkisizleşeceği için çakışma sorunu ortaya çıkar. Bu etkisizleşmeyi, karakter dizisinin başına koyduğunuz ‘r’ kaçış dizisi de engelleyemez. Yani:

>>> print("Kaçış dizisi: \")

Bu şekilde bir tanımlama yaptığımızda Python bize bir hata mesajı gösterir. Çünkü kapanış tırnağının hemen öncesine yerleştirdiğimiz \ kaçış dizisi, Python’ın karakter dizisini kapatan tırnak işaretini görmezden gelmesine yol açarak bu tırnağı etkisizleştiriyor. Böylece sanki karakter dizisini tanımlarken kapanış tırnağını hiç yazmamışız gibi bir sonuç ortaya çıkıyor:

>>> print("Kaçış dizisi: \") File "<stdin>", line 1print("Kaçış dizisi: \")^SyntaxError: EOL while scanning string literal

Üstelik bu durumu, r adlı kaçış dizisi de engelleyemiyor:

>>> print(r"Kaçış dizisi: \") File "<stdin>", line 1print(r"Kaçış dizisi: \")^SyntaxError: EOL while scanning string literal

Çözüm olarak birkaç farklı yöntemden yararlanabilirsiniz. Mesela karakter dizisini kapatmadan önce karakter dizisinin sonundaki \ işaretinin sağına bir adet boşluk karakteri yerleştirmeyi deneyebilirsiniz:

>>> print("Kaçış dizisi: \ ")

Veya kaçış dizisini çiftleyebilirsiniz:

>>> print("Kaçış dizisi: \\")

Ya da karakter dizisi birleştirme yöntemlerinden herhangi birini kullanabilirsiniz:

>>> print("Kaçış dizisi: "+"\\")>>> print("Kaçış dizisi:","\\")>>> print("Kaçış dizisi: ""\\")

Böyle bir durumla ilk kez karşılaştığınızda bunun Python programlama dilinden kaynaklanan bir hata olduğunu düşünebilirsiniz, ancak bu durum Python’ın resmi internet sitesinde ‘Sıkça Sorulan Sorular’ bölümüne alınacak kadar önemli bir tasarım tercihidir: seafoodplus.info#why-can-t-raw-strings-r-strings-end-with-a-backslash

Sayfa Başı (\f)¶

\f artık günümüzde pek kullanılmayan bir kaçış dizisidir. Bu kaçış dizisinin görevi, özellikle eski yazıcılarda, bir sayfanın sona erip yeni bir sayfanın başladığını göstermektir. Dolayısıyla eski model yazıcılar, bu karakteri gördükleri noktada mevcut sayfayı sona erdirip yeni bir sayfaya geçer.

Bu kaçış dizisinin tam olarak ne işe yaradığını test etmek için şu kodları çalıştırın:

>>> f=open("seafoodplus.info","w")>>> print("deneme\fdeneme",file=f)>>> seafoodplus.info()

Şimdi bu kodlarla oluşturduğunuz seafoodplus.info adlı dosyayı LibreOffice veya 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.

Dediğimiz gibi, bu kaçış dizisi artık pek kullanılmıyor. Ama yine de bu kaçış dizisine karşı da uyanık olmalısınız. Çünkü bu kaçış dizisi de beklemediğiniz çıktılar almanıza yol açabilir. Mesela şu örneğe bir bakalım:

>>> "\fırat"'\x0cırat'

Gördüğünüz gibi, siz aslında ‘\fırat’ yazmak isterken, Python bu kelimenin baş tarafındaki \f karakter dizisini bir kaçış dizisi olarak değerlendirip ona göre bir çıktı verdi.

Bütün bu anlattıklarımızın ardından, kaçış dizilerinin, birleştirildikleri karakterlerin farklı bir anlam yüklenmesini sağlayan birtakım işaretler olduğunu anlıyoruz. Örneğin \ işareti (tek tırnak) işareti ile bir araya gelerek, tek tırnak işaretinin karakter dizisi tanımlama dışında başka bir anlam yüklenmesini sağlıyor. Aynı şekilde yine \ işareti (çift tırnak) işareti ile birleşerek çift tırnak işaretinin de karakter dizisi tanımlama dışında bir anlama kavuşmasını sağlıyor. Böylece tırnak işaretlerini karakter dizileri içinde rahatlıkla kullanabiliyoruz.

Ya da yine \ işareti ‘n’ harfi ile bir araya gelip, bu harfin satır başına geçilmesini sağlayan bir kaçış dizisi oluşturmasını mümkün kılıyor. Veya aynı işaret ‘t’ harfiyle birleşip, öğeler arasında sekme oluşturulmasını sağlayabiliyor. Bu araçlar sayesinde ekrana yazdırdığımız bir metnin akışını kontrol etme imkanına kavuşuyoruz.

Kaçış Dizilerine Toplu Bakış¶

Biraz sonra bu önemli konuyu kapatacağız. Ama dilerseniz kapatmadan önce, bu bölümde öğrendiğimiz kaçış dizilerini şöyle bir topluca görelim:

Kaçış Dizisi

Anlamı

\’

Karakter dizisi içinde tek tırnak işaretini kullanabilmemizi sağlar.

\”

Karakter dizisi içinde çift tırnak işaretini kullanabilmemizi sağlar.

\\

Karakter dizisi içinde \ işaretini kullanabilmemizi sağlar.

\n

Yeni bir satıra geçmemizi sağlar.

\t

Karakterler arasında sekme boşluğu bırakmamızı sağlar.

\u

UNICODE kod konumlarını gösterebilmemizi sağlar.

\U

UNICODE kod konumlarını gösterebilmemizi sağlar.

\N

Karakterleri UNICODE adlarına göre kullanabilmemizi sağlar.

\x

Onaltılı sistemdeki bir sayının karakter karşılığını gösterebilmemizi sağlar.

\a

Destekleyen sistemlerde, kasa hoparlöründen bir ‘bip’ sesi verilmesini sağlar.

\r

Aynı satırın başına dönülmesini sağlar.

\v

Destekleyen sistemlerde düşey sekme oluşturulmasını sağlar.

\b

İmlecin sola doğru kaydırılmasını sağlar

\f

Yeni bir sayfaya geçilmesini sağlar.

r

Karakter dizisi içinde kaçış dizilerini kullanabilmemizi sağlar.

Kaçış dizileriyle ilgili son olarak şunu söyleyebiliriz: Kaçış dizileri, görmezden gelebileceğiniz, ‘öğrenmesem de olur,’ diyebileceğiniz önemsiz birtakım işaretler değildir. Bu konu boyunca verdiğimiz örneklerden de gördüğünüz gibi, kaçış dizileri, kullanıcıya göstereceğiniz metinlerin biçimini doğrudan etkiliyor. Bütün bu örnekler, bu kaçış dizilerinin yersiz veya yanlış kullanılmasının ya da bunların bir metin içinde gözden kaçmasının, yazdığınız programların hata verip çökmesine, yani programınızın durmasına sebep olabileceğini de gösteriyor bize.

Böylece bir bölümü daha bitirmiş olduk. Artık Python’la ‘gerçek’ programlar yazmamızın önünde hiçbir engel kalmadı.

Ters Tırnak İşareti Nasıl Yazılır

Aşağıdaki butona basarak bu yazımı bilgisayarın hafızasına alabilirsiniz. Sonra istediğiniz yerde Ctrl+V tuşlarına basarak bu ifadeyi yapıştırabilirsiniz.

Mobil telefonda ise metnin belli bir yerine basılı tuttuğunuzda "yapıştır" seçeneği zaten çıkacaktır.

Ctrl+V için boşluk tuşunun üç yanındaki Ctrl tuşuna basılı tutmanız ve aynı anda V'ye basmanız yeterlidir.

Hafızaya Al

var copyTextareaBtn = seafoodplus.infoelector('.js-textareacopybtn'); seafoodplus.infontListener('click', function(event) { var copyTextarea = seafoodplus.infoelector('.js-copytextarea'); seafoodplus.info(); try { var successful = seafoodplus.infommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; seafoodplus.info('Copying text command was ' + msg); } catch (err) { seafoodplus.info('Oops, unable to copy'); } });

Romen Rakamıyla Nasıl Yazılır - MMXVIIIHiç de Nasıl YazılırÖnsöz Kelimesi Nasıl YazılırKun Feyekun Nasıl YazılırBirde Nasıl Yazılır Web: seafoodplus.info

Klavyde kesme i&#;areti nas&#;l yap&#;l&#;r? Bu yaz&#;da bu sorunun yan&#;t&#;na bak&#;yoruz. Ay&#;rma i&#;areti ya da t&#;rnak i&#;areti olarak da bilinen kesme i&#;areti (') bilgisayar klavyesinde kolayl&#;kla yap&#;labiliyor. Türkçe'de kullan&#;m&#; yayg&#;n noktalama i&#;aretlerinden biri olan kesme/ay&#;rma i&#;areti, özel isimlere eklenen ekleri ay&#;rmak için kullan&#;l&#;r.

Kesme &#;&#;areti Nedir? (') Ay&#;rma &#;&#;areti

Do&#;ru bir yaz&#; dili için ay&#;rma i&#;areti, kullan&#;m önemlidir. Özel isimlere gelen ekleri ay&#;rmak için kullan&#;lan bu i&#;aret ile ekler aras&#;nda bo&#;luk b&#;rak&#;lmaz. Kesme ve t&#;rnak i&#;areti olarak bilinen ay&#;rma i&#;areti, farkl&#; dillerde kullan&#;l&#;r.

Frans&#;zca, &#;ngilizce ve Almanca gibi farkl&#; dillerde de t&#;rnak i&#;areti görülür. Her dilin yap&#;s&#; farkl&#; oldu&#;u için ay&#;rma i&#;aretlerinin kullan&#;ma ve kurallar&#; farkl&#;d&#;r. Ayr&#;ca, ay&#;rma i&#;aretinin ifade etti&#;i anlam dil yap&#;s&#;na göre de&#;i&#;iklik gösterebilir.

Türkçe'de kullan&#;m yayg&#;n kesme i&#;areti, apostrof ve kesme imi olarak da bilinir. Farkl&#; biçimlerde ifade edilen ay&#;rma i&#;aretinin, dilbilgisi kurallar&#;nda farkl&#; görevleri bulunur.

Apostrof i&#;aretinin en belirgin i&#;levi, özel isimlere gelen ekleri ay&#;rmas&#;d&#;r. Say&#;, harf ve k&#;saltmalara gelen eklerin ay&#;rmak için kesme i&#;areti kullan&#;l&#;r. Ayr&#;ca, belirli bir tarih bildiren ay ve gün isimlerinde gelen ekler, kesme i&#;areti ile ayr&#;larak yaz&#;l&#;r.

&#;ngilizcede kesme i&#;areti, zamir ve isimlerin yüklem ile birle&#;ti&#;i durumlarda k&#;saltma yapmak için kullan&#;l&#;r. K&#;saltma anlam&#; katan bu i&#;aret, yaz&#; dilinde s&#;kl&#;kla kullan&#;l&#;r. Ofis dosyalar&#;nda farkl&#; dillerde metinler olu&#;tururken farkl&#; i&#;aretlere ve sembollere ihtiyaç duyulur.

Kesme &#;&#;areti Nas&#;l Yap&#;l&#;r? (Ay&#;rma &#;&#;areti)

Bilgisayarda ay&#;rma i&#;areti yapmak için ikili tu&#; kombinasyonlar&#; kullan&#;labilir. Standart tasar&#;ma sahip farkl&#; marka klavyelerde, benzer komutlar&#; kullanarak ay&#;rma i&#;aretini yaz&#;l&#;r.

Alt Gr ve Shift tu&#;lar&#; farkl&#; i&#;aret kombinasyonlar&#; için kullan&#;l&#;r. Ay&#;rma i&#;aretini yazmak için klavye üzerinde yer alan say&#; tu&#;lar&#;ndan 2 ve Shift tu&#;lar&#;na ayn&#; anda bas&#;lmas&#; gerekir. Böylece farkl&#; metin dosyalar&#; içinde ay&#;rma i&#;aretini kolayca olu&#;turabilirsiniz.

kesme i&#;areti

Klavye üzerinde bozuk tu&#;lar var ise kopyala yap&#;&#;t&#;r yöntemini tercih edebilirsiniz. &#;nternette ay&#;rma i&#;areti (') aramas&#; yaparak ç&#;kan sembolü kopyalayarak istedi&#;iniz her alana yap&#;&#;t&#;rabilirsiniz.

Okuyucu Yorumları

Noktalama İşaretleri (Açıklamalar)

     Duygu ve düşünceleri daha açık ifade etmek, cümlenin yapısını ve duraklama noktalarını belirlemek, okumayı ve anlamayı kolaylaştırmak, sözün vurgu ve ton gibi özelliklerini belirtmek üzere noktalama işaretlerikullanılır.

      Noktalama işaretlerinden nokta, virgül, noktalı virgül, iki nokta, üç nokta, soru, ünlem, tırnak, ayraç ve kesme işaretleri ait oldukları kelimelere bitişik olarak yazılır ve kesme dışındaki işaretlerden sonra bir harf boşluğu ara verilir.

Nokta ( . )

1. Cümlenin sonuna konur: Türk Dil Kurumu, yılında kurul­muştur.

Saatler geçtikçe yollara daha mahzun bir ıssızlık çöküyordu. (Reşat Nuri Güntekin)

2. Bazı kısaltmaların sonuna konur: Alb. (albay), Dr. (doktor), Yrd. Doç. (yardımcı doçent), Prof. (profesör), Cad. (cadde), Sok. (sokak), s. (sayfa), sf. (sıfat), vb. (ve başkası, ve benzeri, ve benzerleri, ve bunun gibi), Alm. (Almanca), Ar. (Arapça), İng. (İngilizce) vb.

3. Sayılardan sonra sıra bildirmek için konur: 3. (üçüncü), (on beşinci); II. Mehmet, XIV. Louis, XV. yüzyıl; 2. Cadde, Sokak, 4. Levent vb.

4. Arka arkaya sıralandıkları için virgülle veya çizgiyle ayrılan rakamlardan yalnızca sonuncu rakamdan sonra nokta konur: 3, 4 ve 7. maddeler; XII – XIV. yüzyıllar arasında vb.

5. Bir yazının maddelerini gösteren rakam veya harflerden sonra konur:

                                   I.               1.                            A.            a.

                                   II.              2.                            B.            b.

6. Tarihlerin yazılışında gün, ay ve yılı gösteren sayıları birbirinden ayırmak için konur: , X vb.

UYARI: Tarihlerde ay adları yazıyla da yazılabilir. Bu durumda ay adların­dan önce ve sonra nokta kullanılmaz: 29 Mayıs , 29 Ekim vb.

7. Saat ve dakika gösteren sayıları birbirinden ayırmak için konur: Tren ’te kalktı. Toplantı ’te başladı.

Tören ’da, hükûmet daireleri kapandıktan yarım saat sonra başlayacaktır. (Tarık Buğra)

8. Kitap, dergi seafoodplus.info künyelerinin sonuna konur:

Agâh Sırrı Levend, Türk Dilinde Gelişme ve Sadeleşme Evreleri, TDK Yayınları, Ankara,

9. Dört ve dörtten çok rakamlı sayılar sondan sayılmak üzere üçlü gruplara ayrılarak yazılır ve araya nokta konur: , , vb.

Genel ağ adreslerinde kullanılır: seafoodplus.info

Matematikte çarpma işareti yerine kullanılır: =20, =72 vb.

 

Virgül ( , )

1. Birbiri ardınca sıralanan eş görevli kelime ve kelime gruplarının arasına konur:

Fırtınadan, soğuktan, karanlıktan ve biraz da korkudan sonra bu sı­cak, aydınlık ve sevimli odanın havasında erir gibi oldum. (Halide Edip Adıvar)

Sessiz dereler, solgun ağaçlar, sarı güller

Dillenmiş ağızlarda tutuk dilli gönüller (Faruk Nafiz Çamlıbel)

      Zindana atılan mahkûmlar gibi titreşerek, haykırarak geri geri kaçmaya uğraşıyorduk. (Hüseyin Rahmi Gürpınar)

Köyde kim çaresiz kalırsa, kimin işi bozulursa İstanbul yolunu tutar. (Ömer Seyfettin)

2. Sıralı cümleleri birbirinden ayırmak için konur:

Umduk, bekledik, düşündük. (Yakup Kadri Karaosmanoğlu)

3. Uzun cümlelerde yüklemden uzak düşmüş olan özneyi belirtmek için konur:

Saniye Hanımefendi, merdivenlerde oğlunun ayak seslerini duyar duymaz, hasretlisini karşılamaya atılan bir genç kadın gibi koltuğundan fırlamış ve ona kapıyı kendi eliyle açmaya gelmişti. (Yakup Kadri Karaosmanoğlu)

4. Cümle içinde ara sözleri veya ara cümleleri ayırmak için ara sözlerin veya ara cümlelerin başına ve sonuna konur:

       Zemin bu kadar koyu bir kırmızıya dönüşünce, bir an için de olsa, belirginliğini yitiriverdi sivilceleri. (Elif Şafak)

Şimdi, efendiler, müsaade buyurursanız, size bir sual sorayım. (Atatürk)

5. Anlama güç kazandırmak için tekrarlanan kelimeler arasına ko­nur:

Akşam, yine akşam, yine akşam,

Göllerde bu dem bir kamış olsam! (Ahmet Haşim)

6. Tırnak içinde olmayan alıntı cümlelerinden sonra konur:

Adana’ya yarın gideceğim, dedi.

       Aç karnına sigara içmekle hiç de iyi etmiyorsun, dedi. (Necati Cumalı)

7. Konuşma çizgisinden sonraki alıntı cümlesinin bitimine konur:

       – Bu akşam Datça’ya gidiyor musunuz, diye sordu.

8. Edebî eserlerde konuşma bölümünden önceki ifadenin sonuna konur:

Bahçe kapısını açtı. Sermet Bey’e,

– Bu anahtar köşkü de açar, dedi. (Ömer Seyfettin)

9. Kendisinden sonraki cümleye bağlı olarak ret, kabul ve teşvik bil­diren hayır, yok, evet, peki, pekâlâ, tamam, olur, hayhay, başüstüne, öyle, haydi, elbette gibi kelimelerden sonra konur: Peki, gideriz. Olur, ben de size katılırım. Hayhay, memnun oluruz. Haydi, geç kalıyoruz.

Evet, kırk seneden beri Türkçe merhale merhale Türkleşiyor. (Yahya Kemal Beyatlı)

Bir kelimenin kendisinden sonra gelen kelime veya kelime grup­larıyla yapı ve anlam bakımından bağlantısı olmadığını göstermek ve anlam karışıklığını önlemek için kullanılır:

Bu, tek gözlü, genç fakat ihtiyar görünen bir adamcağızdır. (Halit Ziya Uşaklıgil)

Bu gece, eğlenceleri içlerine sinmedi. (Reşat Nuri Güntekin)

Hitap için kullanılan kelimelerden sonra konur:

Efendiler, bilirsiniz ki hayat demek, mücadele, müsademe demektir. (Atatürk)

Sayın Başkan,

Sevgili Kardeşim,

Değerli Arkadaşım,

Sayıların yazılışında kesirleri ayırmak için kullanılır: 38,6 (otuz sekiz tam, onda altı), 0,45 (sıfır tam, yüzde kırk beş)

Metin içindeart arda gelen zarf-fiil eki almış kelimelerden sonra konur:

Ancak yemekte bir karara varıp, arkadaşına dikkatli dikkatli bakarak konuştu.

UYARI: Metin içindezarf-fiil eki almış kelimelerden sonra virgül konmaz:

Cumaları bahçede buluştukça kıza kendisinin adi bir mektep talebesi olmadığını anlatmaya çalışıyordu.     (Halide Edip Adıvar)

Şimdiye dek, ben kendimi bildim bileli kimse Değirmenoluk köyünden kaçıp da başka köyde çobanlık, yanaşmalık etmedi. (Yaşar Kemal)

Meydanlığa varmadan bir iki defa İsmail kendisini gördü mü diye kahveye baktı. (Necati Cumalı)

Özne olarak kullanıldıklarında bu, şu, o zamirlerinden sonra konur:

Bu, benim gibi yazarlar için hiç kolay olmaz.

O, eski defterleri çoktan kapatmış, Osmanlıya kucağını açmıştı. (Tarık Buğra)

Kitap, dergi seafoodplus.info künyelerinde yazar, eser, basımevi vb. maddelerden sonra konur:

Falih Rıfkı ATAY, Tuna Kıyıları, Remzi Kitabevi, İstanbul, .

Yazarın soyadı önce yazılmışsa soyadından sonra da virgül konur:

ERGİN, Muharrem, Dede Korkut Kitabı, Ankara,

UYARI: Metin içinde ve, veya, yahut, ya &#; ya bağlaçlarından önce de sonra da virgül konmaz:

Nihat sabaha kadar uyuyamadı ve şafak sökerken Faik’e bol teşek­kürlerle dolu bir kâğıt bırakarak iki gün evvelki cephe dönüşü kıyafeti ile sokağa fırladı. (Peyami Safa)

Ya şevk içinde harap ol ya aşk içinde gönül

Ya lale açmalıdır göğsümüzde yahut gül! (Yahya Kemal Beyatlı)

UYARI: Tekrarlı bağlaçlardan önce ve sonra virgül konmaz:

Hem gider hem ağlar.

Ya bu deveyi gütmeli ya bu diyardan gitmeli. (Atasözü)

Gerek nesirde gerek nazımda yeni bir söyleyişe ulaşılmıştır.

Siz ister inanın ister inanmayın, bir gün bile durmam.

Ne kız verir ne dünürü küstürür.

Bu kurallar bugün de yarın da geçerli olacaktır.

UYARI: Cümlede pekiştirme ve bağlama görevinde kullanılan da / de bağlacından sonra virgül konmaz:

İmlamız lisanımız düzelince, lisanımız da kafamız düzelince düzele­cek çünkü o da ancak onlar kadar bozuktur, fazla değil!     (Yahya Kemal Beyatlı)

UYARI: Metin içinde -ınca / -ince anlamıyla zarf-fiil görevinde kulla­nılan mı / mi ekinden sonra virgül konmaz:

Ben aç yattım mı kötü kötü rüyalar görürüm nedense. (Orhan Kemal)

Öyle zekiler vardır, konuştular mı ağızlarından bal akıyor sanırsın. (Attila İlhan)

UYARI: Şart ekinden sonra virgül konmaz:

Tenha köşelerde ağız ağıza konuşurken yanlarına biri gelecek olursa hemen susuyorlardı. (Reşat Nuri Güntekin)

Gör gözlerinle de aklın yatarsa anlatıver millete. (Tarık Buğra)

Noktalı Virgül ( ; )

1. Cümle içinde virgüllerle ayrılmış tür veya takımları birbirinden ayırmak için konur: Erkek çocuklara Doğan, Tuğrul, Aslan, Orhan; kız çocuklara ise İnci, Çiçek, Gönül, Yonca adları verilir.

Türkiye, İngiltere, Azerbaycan; Ankara, Londra, Bakü.

2. Ögeleri arasında virgül bulunan sıralı cümleleri birbirinden ayır­mak için konur: Sevinçten, heyecandan içim içime sığmıyor; bağırmak, kahkahalar atmak, ağlamak istiyorum.

At ölür, meydan kalır; yiğit ölür, şan kalır. (Atasözü)

3. İkiden fazla eş değer ögeler arasında virgül bulunan cümlelerde özneden sonra noktalı virgül konabilir:

Yeni usul şiirimiz; zevksiz, köksüz, acemice görünüyordu. (Yahya Kemal Beyatlı)

İki Nokta (: )

      1.Kendisiyle ilgili örnek verilecek cümlenin sonuna konur:

Millî Edebiyat akımının temsilcilerinden bir kısmını sıralayalım: Ömer Seyfettin, Halide Edip Adıvar, Ziya Gökalp, Mehmet Emin Yurdakul, Ali Canip Yöntem.

2. Kendisiyle ilgili açıklama verilecek cümlenin sonuna konur:

Bu kararın istinat ettiği en kuvvetli muhakeme ve mantık şu idi: Esas, Türk milletinin haysiyetli ve şerefli bir millet olarak yaşamasıdır. (Atatürk)

Kendimi takdim edeyim: Meclis kâtiplerindenim. (Falih Rıfkı Atay)

3. Ses bilgisinde uzun ünlüyü göstermek için kullanılır: a:ile, ka:til, usu:le, i:cat.

4. Karşılıklı konuşmalarda, konuşan kişiyi belirten sözlerden sonra konur:

Bilge Kağan:         Türklerim, işitin!

                              Üstten gök çökmedikçe,

                              alttan yer delinmedikçe

                              ülkenizi, törenizi kim bozabilir sizin?

Koro:                    Göğe erer başımız

                              başınla senin!

Bilge Kağan:         Ulusum birleşip yücelsin diye

                              gece uyumadım, gündüz oturmadım.

                              Türklerim Bilge Kağan der bana.

                              Ben her şeyi onlar için bildim.

                                     Nöbetteyim! (A. Turan Oflazoğlu)

5. Edebî eserlerde konuşma bölümünden önceki ifadenin sonuna konur:

– Buğdayla arpadan başka ne biter bu topraklarda?

Ziraatçı sayar:

– Yulaf, pancar, zerzevat, tütün&#; (Falih Rıfkı Atay)

6. Genel ağ adreslerinde kullanılır: seafoodplus.info

7. Matematikte bölme işareti olarak kullanılır: =7, =50 vb.

Üç Nokta ( &#; )

1. Anlatım olarak tamamlanmamış cümlelerin sonuna konur:

Ne çare ki çirkinliği hemencecik ve herkes tarafından görülüveri­yordu da bu yanı&#; (Tarık Buğra)

2. Kaba sayıldığı için veya bir başka sebepten dolayı açık yazılmak is­tenmeyen kelime ve bölümlerin yerine konur: Kılavuzu karga olanın burnu b&#;tan çıkmaz.

Arabacı B&#;’a yaklaştığını söylüyor, ikide bir fırsat bularak arabanın içine doğru başını çeviriyordu. (Ahmet Hamdi Tanpınar)

3. Alıntılarda başta, ortada ve sonda alınmayan kelime veya bölümle­rin yerine konur:

&#; derken şehrin öte başından boğuk boğuk sesler gelmeye başladı&#; (Tarık Buğra)

4. Sözün bir yerde kesilerek geri kalan bölümün okuyucunun hayal dünyasına bırakıldığını göstermek veya ifadeye güç katmak için konur:

Sana uğurlar olsun&#; Ayrılıyor yolumuz! (Faruk Nafiz Çamlıbel)

Binaenaleyh, biz her vasıtadan, yalnız ve ancak, bir noktainazardan istifade ederiz. O noktainazar şudur: Türk milletini, medeni cihanda layık olduğu mevkiye isat etmek ve Türk cumhuriyetini sarsılmaz temelleri üzerinde, her gün, daha ziyade takviye etmek&#; (Atatürk)

5. Ünlem ve seslenmelerde anlatımı pekiştirmek için konur:

Gölgeler yaklaştılar. Bir adım kalınca onu kıyafetinden tanıdılar:

—      Koca Ali&#; Koca Ali, be!.. (Ömer Seyfettin)

UYARI: Ünlem ve soru işaretinden sonra üç nokta yerine iki nokta konulması yeterlidir:

Gök ekini biçer gibi!.. Başaklar daha dolmadan. (Tarık Buğra)

Nasıl da akşam oldu?.. Nasıl da yavrucaklar sustu?.. Nasıl da serçecikler yuvalarına sığındı?.. (Necip Fazıl Kısakürek)

6. Karşılıklı konuşmalarda, yeterli olmayan, eksik bırakılan cevap­larda kullanılır:

— Yabancı yok!

— Kimsin?

— Ali&#;

— Hangi Ali?

— &#;

— Sen misin, Ali usta?

— Benim!..

— Ne arıyorsun bu vakit buralarda?

— Hiç&#;

— Nasıl hiç? Suya çekicini mi düşürdün yoksa!..

— !.. (Ömer Seyfettin)

UYARI: Üç nokta yerine iki veya daha çok nokta kullanılmaz.

Soru İşareti ( ? )

1. Soru eki veya sözü içeren cümle veya sözlerin sonuna konur:

Ne zaman tükenecek bu yollar, arabacı? (Faruk Nafiz Çamlıbel)

      Atatürk bana sordu:

— Yeni yazıyı tatbik etmek için ne düşündünüz? (Falih Rıfkı Atay)

      2. Soru bildiren ancak soru eki veya sözü içermeyen cümlelerin sonuna konur:

Gümrükteki memur başını kaldırdı:

      — Adınız?

3. Bilinmeyen, kesin olmayan veya şüpheyle karşılanan yer, tarih vb. durumlar için kullanılır: Yunus Emre ( ?), (Doğum yeri: ?) vb.

(?) yılında doğan Fuzuli&#;

Ankara’dan Antalya’ya arabayla üç saatte (?) gitmiş.

UYARI: mı / mi ekini alan yan cümle temel cümlenin zarf tümleci olduğunda cümlenin sonuna soru işareti konmaz: Akşam oldu mu sürüler döner. Hava karardı mı eve gideriz.

Bahar gelip de nehir çağıl çağıl kabarmaya başlamaz mı içimi geri kalmış bir saat huzursuzluğu kaplardı. (Haldun Taner)

UYARI: Soru ifadesi taşıyan sıralı ve bağlı cümlelerde soru işareti en sona konur:

Çok yakından mı bu sesler, çok uzaklardan mı?

Üsküdar’dan mı, Hisar’dan mı, Kavaklardan mı? (Yahya Kemal Beyatlı)

Ünlem İşareti ( ! )

1. Sevinç, kıvanç, acı, korku, şaşma gibi duyguları anlatan cümle veya ibarele­rin sonuna konur: Hava ne kadar da sıcak!Aşk olsun! Ne kadar akıllı adamlar var! Vah vah!

Ne mutlu Türk’üm diyene! (Atatürk)

2. Seslenme, hitap ve uyarı sözlerinden sonra konur:

Ordular! İlk hedefiniz Akdeniz’dir, ileri! (Atatürk)

Ey Türk gençliği! Birinci vazifen; Türk istiklalini, Türk cumhuriye­tini, ilelebet, muhafaza ve müdafaa etmektir. (Atatürk)

Ak tolgalı beylerbeyi haykırdı: İlerle! (Yahya Kemal Beyatlı)

Dur, yolcu! Bilmeden gelip bastığın

Bu toprak bir devrin battığı yerdir. (Necmettin Halil Onan)

UYARI: Ünlem işareti, seslenme ve hitap sözlerinden hemen sonra konulabi­leceği gibi cümlenin sonuna da konabilir:

Arkadaş, biz bu yolda türküler tuttururken

      Sana uğurlar olsun&#; Ayrılıyor yolumuz!(Faruk Nafiz Çamlıbel)

3. Alay, kinaye veya küçümseme anlamı kazandırılmak istenen sözden hemen sonra yay ayraç içinde ünlem işareti kullanılır:

İsteseymiş bir günde bitirirmiş (!) ama ne yazık ki vakti yokmuş (!).

Adam, akıllı (!) olduğunu söylüyor.

Kısa Çizgi ( &#; )

1. Satıra sığmayan kelimeler bölünürken satır sonuna konur:

      Soğuktan mı titriyordum, yoksa heyecandan, üzüntüden mi bil-

      mem. Havuzun suyu bulanık. Kapının saatleri 12’yi geçmiş. Kanepe-

      lerde kimseler yok. Tramvay ne fena gıcırdadı! Tramvayda-

      ki adam bir tanıdık mı idi acaba? Ne diye öyle dönüp dönüp baktı?

      Yoksa kimseciklerin oturmadığı kanepelerde bu saatte pek başıboş-

      lar mı oturur? (Sait Faik Abasıyanık)

 

 

2. Cümle içinde ara sözleri veya ara cümleleri ayırmak için ara sözlerin veya ara cümlelerin başına ve sonuna konur, bitişik yazılır:

Küçük bir sürü -dört inekle birkaç koyun- köye giren geniş yolun ağzında durmuştu. (Ömer Seyfettin)

3. Kelimelerin kökleri, gövdeleri ve eklerini birbirinden ayırmak için kullanılır: al-ış, dur-ak, gör-gü-süz-lük vb.

4. Fiil kök ve gövdelerini göstermek için kullanılır: al-, dur-, gör-, ver-; başar-, kana-, okut-, taşla-, yazdır- vb.

5. İsim yapma eklerinin başına, fiil yapma eklerinin başına ve sonuna konur: -ak, -den, -ış, -lık; -ımsa-; -la-; -tır- vb.

6. Heceleri göstermek için kullanılır: a-raş-tır-ma, bi-le-zik, du-ruş-ma, ku-yum-cu-luk, prog-ram, ya-zar-lık vb.

7. Arasında, ve, ile, ila, &#;-den &#;-e anlamlarını vermek için kelimeler veya sayılar arasında kullanılır: Aydın-İzmir yolu, Türk-Alman ilişkileri, Ural-Altay dil grubu, Dil ve Tarih-Coğrafya Fakültesi, , Beşiktaş-Fenerbahçe karşılaşması, Manas Destanı’nda soy-dil-din üçgeni, Birinci Dünya Savaşı, Türkçe-Fransızca Sözlük vb.

UYARI: Cümle içinde sayı adlarının yinelenmesinde araya kısa çizgi konmaz: On on beş yıl. Üç beş kişi geldi.

8. Matematikte çıkarma işareti olarak kullanılır: =30

9. Sıfırdan küçük değerleri göstermek için kullanılır: -2 °C

Uzun Çizgi (—)

Yazıda satır başına alınan konuşmaları göstermek için kullanılır. Buna konuşma çizgiside denir.

Frankfurt’a gelene herkesin sorduğu şunlardır:

— Eski şehri gezdin mi?

— Rothschild’in evine gittin mi?

— Goethe’nin evini gezdin mi? (Ahmet Haşim)

Oyunlarda uzun çizgi konuşanın adından sonra da konabilir:

Sıtkı Bey — Kaleyi kurtarmak için daha güzel bir çare var. Gerçekten ölecek adam ister.

İslam Bey — Ben daha ölmedim. (Namık Kemal)

UYARI: Konuşmalar tırnak içinde verildiğinde uzun çizgi kul­lanılmaz.

Arabamız tutarken Erciyes’in yolunu:

“Hancı dedim, bildin mi Maraşlı Şeyhoğlu’nu?” (Faruk Nafiz Çamlıbel)

Eğik Çizgi ( / )

1. Dizeler yan yana yazıldığında aralarına konur: Korkma! Sönmez bu şafaklarda yüzen al sancak / Sönmeden yurdumun üstünde tüten en son ocak / O benim milletimin yıldızıdır, parlayacak / O benimdir, o benim milletimindir ancak. (Mehmet Akif Ersoy)

2. Adres yazarken apartman numarası ile daire numarası arasına ve semt ile şehir arasına konur: Altay Sokağı No.: 21/6 Kurtuluş / ANKARA

Ülke adı yazılacağında ise:

       Atatürk Bulvarı No.:

Kavaklıdere / Ankara

                   TÜRKİYE

3. Tarihlerin yazılışında gün, ay ve yılı gösteren sayıları birbirinden ayırmak için konur: 18/11/, 15/IX/ vb.

4. Dil bilgisinde eklerin farklı biçimlerini göstermek için kullanılır: -a /-e, -an /-en, -lık /-lik, -madan /-meden vb.

5. Genel ağ adreslerinde kullanılır: seafoodplus.info

6. Matematikte bölme işareti olarak kullanılır: 70/2=35

7. Fizik, matematik vb. alanlarda birimler arası orantıları gösterirken eğik çizgi araya boşluk konulmadan kullanılır: g/sn (gram/saniye)

Ters Eğik Çizgi ( \ )

Bilişim uygulamalarında art arda gelen dizinleri birbirinden ayırt etmek için kullanılır: C:\Belgelerim\Türk İşaret Dili\Kitapçıseafoodplus.info

Tırnak İşareti ( “ ” )

1. Başka bir kimseden veya yazıdan olduğu gibi aktarılan sözler tır­nak içine alınır: Türk Dil Kurumu binasının yan cephesinde Atatürk’ün “Türk dili, Türk milletinin kalbidir, zihnidir.” sözü yazılıdır. Dil ve Tarih-Coğrafya Fakültesinin ön cephesinde Atatürk’ün “Hayatta en hakiki mürşit ilimdir.” vecizesi yer almaktadır. Ulu önderin “Ne mutlu Türk’üm diyene!” sözü her Türk’ü duygulandırır.

Bakınız, şair vatanı ne güzel tarif ediyor:

“Bayrakları bayrak yapan üstündeki kandır.

Toprak eğer uğrunda ölen varsa vatandır.”

UYARI: Tırnak içindeki alıntının sonunda bulunan işaret (nokta, soru işareti, ünlem işareti vb.) tırnak içinde kalır:

“İzmir üzerine dünyada bir şehir daha yoktur!” diyorlar. (Yahya Kemal Beyatlı)

2. Özel olarak vurgulanmak istenen sözler tırnak içine alınır: Yeni bir “barış taarruzu” başladı.

3. Cümle içerisinde eserlerin ve yazıların adları ile bölüm başlıkları tırnak içine alınır:

       Bugün öğrenciler “Kendi Gök Kubbemiz” adlı şiiri incelediler.

      “Yazım Kuralları” bölümünde bazı uyarılara yer verilmiştir.

UYARI: Cümle içerisinde özel olarak belirtilmek istenen sözler, kitap ve dergi adları ve başlıkları tırnak içine alınmaksızın eğik yazıyla dizilerek de gösterilebilir:

Höyük sözü Anadolu’datepeolarak geçer.

      Cahit Sıtkı’nın Şairin Ölümü şiirini Yahya Kemal çok sevmişti. (Ahmet Hamdi Tanpınar)

UYARI: Tırnak içine alınan sözlerden sonra gelen ekleri ayırmak için kesme işareti kulla­nılmaz: Elif Şafak’ın “Bit Palas”ını okudunuz mu?

      4. Bilimsel çalışmalarda künye verilirken makale adları tırnak içinde yazılır.

Tek Tırnak İşareti ( ‘ ’ )

Tırnak içinde verilen cümlenin içinde yeniden tırnağa alınması gereken bir sözü, ibareyi belirtmek için kullanılır:

       Edebiyat öğretmeni “Şiirler içinde ‘Han Duvarları’ gibisi var mı?” dedi ve Faruk Nafiz’in bu güzel şiirini okumaya başladı.

      “Atatürk henüz ‘Gazi Mustafa Kemal Paşa’ idi. Benden ona dair bir kitap için ön söz istemişlerdi.” (Falih Rıfkı Atay)

Denden İşareti (&#;)

Bir yazıdaki maddelerin sıralanmasında veya bir çizelgede alt alta gelen aynı sözlerin, söz gruplarının ve sayıların tekrar yazılmasını önlemek için kullanılır:

a. Etken         fiil

b. Edilgen       &#;

c. Dönüşlü      &#;

ç. İşteş             &#;

Yay Ayraç ( )

1. Cümledeki anlamı tamamlayan ve cümlenin dışında kalan ek bilgiler için kullanılır. Yay ayraç içinde bulunan ve yargı bildiren anlatımların sonuna uygun noktalama işareti konur:

Anadolu kentlerini, köylerini (Köy sözünü de çekinerek yazıyorum.) gezsek bile görmek için değil, kendimizi göstermek için geziyoruz. (Nurullah Ataç)

2. Özel veya cins isme ait ek, ayraçtan önce yazılır:

Yunus Emre’nin (?)&#;

İmek fiilinin (ek fiil) geniş zamanı şahıs ekleriyle çekilir.

3. Tiyatro eserlerinde ve senaryolarda konuşanın hareketlerini, durumunu açıkla­mak ve göstermek için kullanılır:

İhtiyar – (Yavaş yavaş Kaymakam&#;a yaklaşır.) Ne oluyor beyefendi? Allah rızası için bana da anlatın&#; (Reşat Nuri Güntekin)

4. Alıntıların aktarıldığı eseri, yazarı veya künye bilgilerini göstermek için kullanılır:

Cihanın tarihi, vatanı uğrunda senin kadar uğraşan, kanını döken bir millet daha gösteremez. Senin kadar kimse kendi vatanına sahip ol­maya hak kazanmamıştır. Bu vatan ya senindir ya kimsenin. (Ahmet Hikmet Müftüoğlu)

Eşin var, aşiyanın var, baharın var ki beklerdin

      Kıyametler koparmak neydi ey bülbül, nedir derdin? (Mehmet Akif Ersoy)

Bir isim kökü, gerektiğinde çeşitli eklerle fiil kökü durumuna getirilebilir (Zülfikar 45).

5. Alıntılarda, alınmayan kelime veya bölümle­rin yerine konulan üç nokta, yay ayraç içine alınabilir.

6. Bir söze alay, kinaye veya küçümseme anlamı kazandırmak için kullanılan ünlem işareti yay ayraç içine alınır: Adam, akıllı (!) olduğunu söylüyor.

7. Bir bilginin şüpheyle karşılandığını veya kesin olmadığını gös­termek için kullanılan soru işareti yay ayraç içine alınır: (?) yılında doğan Fuzuli&#;

8. Bir yazının maddelerini gösteren sayı ve harflerden sonra kapama ayracı konur:

                I)             1)                   A)           a)

                II)           2)                    B)           b)

Köşeli Ayraç ( [ ] )

1. Ayraç içinde ayraç kullanılması gereken durumlarda yay ayraçtan önce köşeli ayraç kullanılır: Halikarnas Balıkçısı [Cevat Şakir Kabaağaçlı ()] en güzel eserlerini Bodrum’da yazmıştır.

2. Metin aktarmalarında, çevirilerde, alıntılarda çalışmayı yapanın eklediği sözler için kullanılır: “Eldem, Osmanlıda en önemli fark[ın], mezar taşının şeklinde ortaya çık[tığını] söyledikten sonra&#;” (Hilmi Yavuz)

3. Kaynak olarak verilen kitap veya makalelerin künyelerine ilişkin bazı ayrıntıları göstermek için kullanılır: Reşat Nuri [Güntekin], Çalıkuşu, Dersaadet, Server Bedi [Peyami Safa]

Kesme İşareti ( ’ )

1. Özel adlara getirilen iyelik, durum ve bildirme ekleri kesme işaretiyle ayrılır: Kurtuluş Savaşı’nı,Atatürk’üm, Türkiye’mizin, Fatih Sultan Mehmet’e, Muhibbi’nin, Gül Baba’ya, Sultan Ana’nın, Mehmet Emin Yurdakul’dan, Kâzım Karabekir’i, Yunus Emre’yi, Ziya Gökalp’tan, Refik Halit Karay’mış, Ahmet Cevat Emre’dir, Namık Kemal’se, Şinasi’yle, Alman’sınız, Kırgız’ım, Karakeçili’nin, Osmanlı Devleti’ndeki, Cebrail’den, Çanakkale Boğazı’nın, Samanyolu’nda, Sait Halim Paşa Yalısı’ndan, Resmî Gazete’de, Millî Eğitim Temel Kanunu’na, Telif Hakkı Yayın ve Satış Yönetmeliği’ni, Eski Çağ’ın, Yükselme Dönemi’nin, Cumhuriyet Dönemi Türk Edebiyatı’na vb.

“Onun için Batı’da bunlara birer fonksiyon buluyorlar.” (Burhan Felek)

       senesi Mayıs’ının 19’uncu günü Samsun’a çıktım.(Atatürk)

       Yer bildiren özel isimlerde kısaltmalı söyleyiş söz konusu olduğu zaman ekten önce kesme işareti kullanılır:Hisar’dan, Boğaz’danvb.

       Belli bir kanun, tüzük, yönetmelik kastedildiğinde büyük harfle yazılan kanun, tüzük, yönetmelik sözlerinin ek alması durumunda kesme işareti kullanılır: Bu Kanun’un maddesinin c bendi&#; Yukarıda adı geçen Yönetmelik’in 2’nci maddesine göre&#; vb.

      Özel adlar için yay ayraç içinde bir açıklama yapıldığında kesme işareti yay ayraçtan önce kullanılır: Yunus Emre’nin (?), Yakup Kadri’nin (Karaosmanoğlu) vb.

      Ek getirildiğinde Avrupa Birliği kesme işareti ile kullanılır: Avrupa Birliği’ne üye ülkeler&#;

      UYARI:Sonunda 3. teklik kişi iyelik eki olan özel ada, bu ek dışında başka bir iyelik eki getirildiğinde kesme işareti konmaz: Boğaz Köprümüzün güzelliği, Amik Ovamızın bitki örtüsü, Kuşadamızdaki limanvb.

UYARI: Kurum, kuruluş, kurul, birleşim, oturum ve iş yeri adlarına gelen ekler kesmeyle ayrılmaz: Türkiye Büyük Millet Meclisine, Türk Dil Kurumundan, Türkiye Petrolleri Anonim Ortaklığına, Türk Dili ve Edebiyatı Bölümü Başkanlığının; Bakanlar Kurulunun, Danışma Kurulundan, Yürütme Kuruluna; Türkiye Büyük Millet Meclisinin ’nci Birleşiminin 2’nci Oturumunda; Mavi Köşe Bakkaliyesinden vb.

UYARI: Başbakanlık, Rektörlük vb. sözler ünlüyle başlayan bir ek geldiğinde Başbakanlığa, Rektörlüğe vb. biçimlerde yazılır.

UYARI: Özel adlara getirilen yapım ekleri, çokluk eki ve bunlardan sonra gelen diğer ekler kesmeyle ayrılmaz: Türklük, Türkleşmek, Türkçü, Türkçülük, Türkçe, Müslümanlık, Hristiyanlık, Avrupalı, Avrupalılaşmak, Aydınlı, Konyalı, Bursalı, Ahmetler, Mehmetler, Yakup Kadriler, Türklerin, Türklüğün, Türkleşmekte, Türkçenin, Müslümanlıkta, Hollandalıdan, Hristiyanlıktan, Atatürkçülüğün vb.

UYARI: Sonunda p, ç, t, k ünsüzlerinden biri bulunan Ahmet, Çelik, Halit, Şahap; Bosna-Hersek; Kerkük, Sinop, Tokat, Zonguldak gibi özel adlara ünlüyle başlayan ek getirildiğinde kesme işaretine rağmen Ahmedi, Halidi, Şahabı; Bosna-Herseği; Kerküğü, Sinobu, Tokadı, Zonguldağı biçiminde son ses yumuşatılarak söylenir.

UYARI: Özel adlar yerine kullanılan “o” zamiri cümle içinde büyük harfle yazılmaz ve kendisinden sonra gelen ekler kesme işaretiyle ayrıl­maz.

2. Kişi adlarından sonra gelen saygı ve unvan sözlerine getirilen ekleri ayırmak için konur: Nihat Bey’e, Ayşe Hanım’dan, Mahmut Efendi’ye, Enver Paşa’ya; Türk Dil Kurumu Başkanı’na vb.

3. Kısaltmalara getirilen ekleri ayırmak için konur: TBMM’nin, TDK’nin, BM’de, ABD’de, TV’ye vb.

4. Sayılara getirilen ekleri ayırmak için konur: ’te, 8’inci madde, 2’nci kat; 7,65’lik, 9,65’lik, ’yle vb.

5. Belirli bir tarih bildiren ay ve gün adlarına gelen ekleri ayırmak için konur: Başvurular 17 Aralık’a kadar sürecektir. Yabancı Sözlere Karşılıklar Kılavuzu’nun veri tabanının genel ağda hizmete sunulduğu gün olan 12 Temmuz Pazartesi’nin TDK için önemi büyüktür.

6. Seslerin ölçü ve söyleyiş gereği düştüğünü göstermek için kullanılır:

      Bir ok attım karlı dağın ardına

Düştü m’ola sevdiğimin yurduna

İl yanmazken ben yanarım derdine

Engel aramızı açtı n’eyleyim (Karacaoğlan)

Şems’in gözlerine bir şüphe çöreklendi: “Dostum ne’n var? Her şey yolunda mı?” (Elif Şafak)

Güzelliğin on par’etmez

Bu bendeki aşk olmasa (Âşık Veysel)

7. Bir ek veya harften sonra gelen ekleri ayırmak için konur: a’dan z’ye kadar, Türkçede -lık’la yapılmış sözler.

nest...

batman iftar saati 2021 viranşehir kaç kilometre seferberlik ne demek namaz nasıl kılınır ve hangi dualar okunur özel jimer anlamlı bayram mesajı maxoak 50.000 mah powerbank cin tırnağı nedir