Başlamadan önce şunu belirtmek istiyorum; konumda yazım hataları, bilgi eksikliği ya da burası tam anlaşılmamış dediğiniz yerler olabilir. Oralarda siz devreye girip beni düzeltirseniz karşılıklı öğrenim akışı sağlanmış olur, ben yanlış bildiğim bilginin doğrusunu, başkaları ise hiç görmediği yeni bilgileri öğrenmiş olabilir.
Merhabalar. Bu konuda pythonla uğraşanların zaman zaman karşısına geldiği bu deyimi/keywordu naçizane bilgim yettiğince anlatıcam. Üstte belirttiğimi de dikkate alarak okursanız konuyu sadece ben değil sizde açmış olursunuz
Şimdi fazla uzatmadan son kez şunu da belirteyim; Sözlük anlatımını anlatmayacağım.
Öncelikle assert, koşul ifadeleri gibi kullanıldığını bilmenizi istiyorum. Koşul ifadeleri de bildiğiniz üzere if, elif ve else. Bu üç ifadeden farkı assert her zaman True döndürmenin yolunu aradığıdır. Yani else'i kullandığınız amaç ile assert'i kullanamazsınız. Ama if'in olumsuzu olarak yine yazabilirsiniz. Assert'i koşul ifadesinden biri ile bağdaştıracaksanız bu tamamen True değer döndürmeye odaklı bir if koşulu ile bağdaştırabilirsiniz.
Aşağıya birkaç örnek bırakıcam üstte yazdıklarımdan çok daha net anlayacaksınız;
basit birkaç örnek yazıyorum:
Bunda kodu "a, b'den büyük mü" diye okuyoruz. Eğer büyükse bi alt satıra geçiyor ve program istediğimiz çıktıyı veriyor.
Eğer büyük olmazsa ne oluyor ?
O zaman da bize "AssertionError" hatası veriyor. Başta dediğim gibi assert deyimi her zaman True döndürmenin peşindedir. Yani var olan doğru bir ifadeyi sizin girmenizi ister. Bu ifade zaten doğruysa bir alt satırındaki işlemi yapar gibi bir mantıkla anlayabilirsiniz.
AssertionError hatası, assert ve for döngüsünün basit kullanımı;
Burada da her sayı 2 ye tam bölünemeyeceğinden bölünemeyen sayı koşula girdiğinde bize AssertionError hatası veriyor. Çünkü ortada bir True ifade değil False ifade oluyor. Bunun önüne fırlatılan hatayı yakalayıp pass diyerek oluşacak hataya rağmen programımızı devam ettiriyoruz. Bu haliyle bize yalnızca çift sayıları ekrana vermiş oluyor.
Assert deyimi "or", "and", "not" gibi karar yapılarını da kullanmamıza izin veriyor;
Yine bu karar yapılarına ait örnek kullanım olarak şöyle yapabiliriz;
Buradaki örnekte bir fonksiyon tanımladık bu fonksiyonun görevi yalnızca integer veya string veri tipinde değer alabilir. Fonksiyon içeriğine bir adet assert ekledik. Assert içeriğine dikkat ettiyseniz or karar yapısını kullandık ve ","(virgül) ile ayrıldığı bir yapı ile karşılaştık.
Bu durum assertte şöyle işliyor; Eğer True değeri vermeyen bir durumda bana virgül ile ayrılan yerdeki ifadeyi hata mesajı olarak gönder. float veri tipinde bir değeri parametre olarak verdiğimide bize virgül ile ayırdığımız yerdeki yazdığımız açıklamayı vermiş olucak.
Son olarak "not" karar yapısına ilişkin örnek vererek bitireyim;
Görüldüğü üzere bu örnekte koşulsuz bir while döngüsü içerisinde iki adet assert ve bir adette assertionError kullandık. İlk satırda görüldüğü üzere "assert not a < b" bize "a, b'den küçük değilse" bir altındaki kod ise "b'nin değerini birt arttır" olarak söylüyor. Haliyle a, b'den zaten küçük olmadığına göre alt satıra geçerek b'yi bir arttırdı. Fakat ikinci assert deyimine geldiğimizde b, a'dan büyük olana kadar hata vereceği için ve bu hata sonucunda program durmaması için fırlatılan AssertionError hatasını yakalayıp pass diyerek işlevsiz hale getirdik. Böylece son hatadan sonra b değeri a'dan büyük olacak ve hemen altındaki break komutuna gelerek sonsuz döngü kırılmış olacak. Haliyle de program sonlanmış olacak.
Yani umarım faydası olmuştur. Umarım eksik bilgi ya da yanlış bilgi vermemişimdir. Yanlışlarım varsa düzeltmenizi eksik bilgi varsa da bu eksikliği gidermenizi rica ederek konumu bitiriyorum.
Not: Neden kaynak belirtmediğimi düşünebilirsiniz. Ben şahsi bilgilerimi (bildiklerimi) aktardığım için kaynak belirtme zorunluluğu hissetmedim. Zira arasanız da benzerini bir başka sitede/forumda bulabileceğiniz bir yazım yok
Merhabalar. Bu konuda pythonla uğraşanların zaman zaman karşısına geldiği bu deyimi/keywordu naçizane bilgim yettiğince anlatıcam. Üstte belirttiğimi de dikkate alarak okursanız konuyu sadece ben değil sizde açmış olursunuz
Şimdi fazla uzatmadan son kez şunu da belirteyim; Sözlük anlatımını anlatmayacağım.
Öncelikle assert, koşul ifadeleri gibi kullanıldığını bilmenizi istiyorum. Koşul ifadeleri de bildiğiniz üzere if, elif ve else. Bu üç ifadeden farkı assert her zaman True döndürmenin yolunu aradığıdır. Yani else'i kullandığınız amaç ile assert'i kullanamazsınız. Ama if'in olumsuzu olarak yine yazabilirsiniz. Assert'i koşul ifadesinden biri ile bağdaştıracaksanız bu tamamen True değer döndürmeye odaklı bir if koşulu ile bağdaştırabilirsiniz.
Aşağıya birkaç örnek bırakıcam üstte yazdıklarımdan çok daha net anlayacaksınız;
basit birkaç örnek yazıyorum:
Python:
a = 10
b = 5
assert a > b
print("a, b'den büyük")
Eğer büyük olmazsa ne oluyor ?
O zaman da bize "AssertionError" hatası veriyor. Başta dediğim gibi assert deyimi her zaman True döndürmenin peşindedir. Yani var olan doğru bir ifadeyi sizin girmenizi ister. Bu ifade zaten doğruysa bir alt satırındaki işlemi yapar gibi bir mantıkla anlayabilirsiniz.
AssertionError hatası, assert ve for döngüsünün basit kullanımı;
Python:
for i in range(100):
try:
assert i % 2 == 0
print(i)
except AssertionError:
pass
Assert deyimi "or", "and", "not" gibi karar yapılarını da kullanmamıza izin veriyor;
Yine bu karar yapılarına ait örnek kullanım olarak şöyle yapabiliriz;
Python:
def type_(var):
assert type(var) is int or type(var) is str, "Yalnızca String veya integer değer kabul edilebilir"
print(type(var))
type_(var=5.1)
Buradaki örnekte bir fonksiyon tanımladık bu fonksiyonun görevi yalnızca integer veya string veri tipinde değer alabilir. Fonksiyon içeriğine bir adet assert ekledik. Assert içeriğine dikkat ettiyseniz or karar yapısını kullandık ve ","(virgül) ile ayrıldığı bir yapı ile karşılaştık.
Bu durum assertte şöyle işliyor; Eğer True değeri vermeyen bir durumda bana virgül ile ayrılan yerdeki ifadeyi hata mesajı olarak gönder. float veri tipinde bir değeri parametre olarak verdiğimide bize virgül ile ayırdığımız yerdeki yazdığımız açıklamayı vermiş olucak.
Son olarak "not" karar yapısına ilişkin örnek vererek bitireyim;
Python:
a = 10
b = 5
while True:
try:
assert not a < b
b += 1
print("b= %d" % b, "a= %d" % a)
assert b > a
break
except AssertionError:
pass
Görüldüğü üzere bu örnekte koşulsuz bir while döngüsü içerisinde iki adet assert ve bir adette assertionError kullandık. İlk satırda görüldüğü üzere "assert not a < b" bize "a, b'den küçük değilse" bir altındaki kod ise "b'nin değerini birt arttır" olarak söylüyor. Haliyle a, b'den zaten küçük olmadığına göre alt satıra geçerek b'yi bir arttırdı. Fakat ikinci assert deyimine geldiğimizde b, a'dan büyük olana kadar hata vereceği için ve bu hata sonucunda program durmaması için fırlatılan AssertionError hatasını yakalayıp pass diyerek işlevsiz hale getirdik. Böylece son hatadan sonra b değeri a'dan büyük olacak ve hemen altındaki break komutuna gelerek sonsuz döngü kırılmış olacak. Haliyle de program sonlanmış olacak.
Yani umarım faydası olmuştur. Umarım eksik bilgi ya da yanlış bilgi vermemişimdir. Yanlışlarım varsa düzeltmenizi eksik bilgi varsa da bu eksikliği gidermenizi rica ederek konumu bitiriyorum.
Not: Neden kaynak belirtmediğimi düşünebilirsiniz. Ben şahsi bilgilerimi (bildiklerimi) aktardığım için kaynak belirtme zorunluluğu hissetmedim. Zira arasanız da benzerini bir başka sitede/forumda bulabileceğiniz bir yazım yok
Son düzenleme:





