İSİMLİ ARGÜMANLAR İlk önce argüman'ın ne olduğunu açıklayalım. Aslında önceki derslerimizde kısaca yazmıştım. Python'da fonksiyon tanımlarken fonksiyon adından sonra kullandığımız parantezin içine yazdığımız değişkenlere "parametre" adı veriyorduk. Ancak bu parametreyi çağırırken parantez içine yazdıklarımıza "argümanlar" adı veriyoruz; ilk_fonksiyonumuz("argüman1", "argüman2", "argüman3") Hepsini görmek için tıklayın... Fonksiyonlarımızı tanımlarken ne kadar parametre kullandıysak, fonksiyonlarımızı çağırırkende kullandığımız parametre sayısı kadar argüman girebiliyoruz. Unutmamız gereken şey ise bu parametrelerin sırasıdır. Parametreleri hangi sıra ile tanımadıysak, argümanlarıda o sıra ile girmemiz gerekir. Örneğin şöyle bir fonksiyon tanımladık; def kisi : Hepsini görmek için tıklayın... Şimdi bu fonksiyonumuzu çağırırken argümanları aynı sırada kullanmalıyız. Yani ilk sıraya ismi, 2. sıraya soyisim, 3. sıraya telefonu, 4. sıraya adresi yazmalıyız ; kisi("Mehmet", "Çağlayan", "0544 888 88 88", "Konak/İzmir") Hepsini görmek için tıklayın... Diyelim ki büyük bir proje hazırlıyoruz ve her zaman işimizi görecek bir fonksiyon tanımladık. Bu fonksiyonunda parametre sayısı oldukça fazla. Parametre sayısı fazla olunca sırayı karıştırmamız kaçınılmaz olucaktır. Python bunuda düşünmüş ve bizlere isimli argümanları sunmuş. "kisi" adlı fonksiyonumuzu birde isimli argümanları kullanarak çağıralım; kisi(isim = "Mehmet", soyisim = "Çağlayan", tel = "0544 888 88 88", adres = "Konak/İzmir") Hepsini görmek için tıklayın... Sanırım isimli argümanlar anlaşıldı. Kısaca özet geçeyim. Fonksiyonumuzda kullandığımız parametrelerin sayısı fazla ise hata yapmamak için fonksiyonumuzu çağırırken parametre_adi = "argüman" olarak çağıyoruz. GÖMÜLÜ FONKSİYONLAR İngilizce karşılığı "Built-in Functions" dur. Gömülü fonksiyonlar python'un içinde olan ve her daim hazır bulunan fonksiyonlardır. Aslında bunları siz gördünüz. range , len fonksiyonları bir gömülü fonksiyondur. Mesela len fonksiyonunu kullanarak bir listede kaç tane öğe olduğunu gördük. Bunun için len fonksiyonunu baştan tanımlamadık. Python'da gömülü halde bulunun len fonksiyonunu sadece çağırdık. Bu fonksiyonları python geliştiricileri tanımlamış ve dilin içine gömmüşlerdir. Gömülü fonksiyonların listesini http://docs.python. org/library/functions.html adresinden bulabilirsiniz. Bu liste program yazarken işimize çok yarıyacak. Mesela tam sayıları, ikili sayılara çevirmek istiyoruz. Bu durumda yeniden bir fonksiyon tanımlamamıza gerek yok. Çünkü bunu bizim yerimize python geliştiricileri yapmışlar ve dilin içine gömmüşler. Bizim yapmamız gerek ise bin fonksiyonunu çağırmak olacak. Peki biz bu gömülü fonksiyonları niye kullanalım? Bir kere gömülü fonksiyonlar bizim tanımladığımız fonksiyonlardan kat ve kat hızlıdır. Python geliştiricileri bu fonksiyonları özel olarak optimize ederler. Ve bu fonksiyonlar her an hazırda bekler. Biz sadece çağırırız. GLOBAL DEYİMİ Önceki konularımızdada bahsetmiştik. Bir fonksiyon tanımladığımızda fonksiyonun gövdesini oluşturan değişkenler sadece o fonksiyon içinde geçerli olur. Mesela bir örnek verelim; Bu kodları çalıştırdığımızda şöyle bir hata mesajı alıcaz; Traceback : File "C:\Documents and Settings\user\Desktop\ornekler. py", line 7, in <module> print a NameError: name 'a' is not defined Bu hata mesajının neden a değişkenin olmamasıyla ilgili. Ancak biz a adlı bir değişken tanımlamıştık, bu hatanın sebebi nedir o zaman? Bu hatanın sebebi bizim "a" değişkenini fonksiyonun içinde tanımlamış olmamız. deger adlı fonksiyonumuz "def deger :" ifadesi ile başlıyor ve "print a" ifadesi ile bitiyor. Bu fonksiyonun etkisi bu alanla sınırlıdır. Biz buna python'da isim alanı diyoruz. Burada a değişkeni sadece fonksiyon sınırları içinde tanımlanmıştır. Fonksiyon dışında python "a" değişkenin tanımlanmamış olarak algılayacaktır. Peki biz bu "a" değişkenin kendi sınırları dışındada geçerli olmasını sağlayabilirmiyiz? Elbette sağlayabiliriz. Bunun için global deyimini kullanıyoruz; Burada deger adlı bir fonksiyon tanımladık ve gövdesini şöyle yaptık: global deyimi ile bir a değişkeni tanımladık. Ardından a değişkenin 7 değeri verdik. Ardından deger fonksiyonunu çağırdık ve "print a" komutu ile a değişkeninin globalleştiğini gördük. Ancak burda direk olarak print a komutunu verirsek yine hata alıcaz. Öncelikle deger fonksiyonunu çağırmamız gerekiyor. Bu deyimin bize ne gibi yararı olabilir? Aslında yarardan çok zarar verebilir bazı yerlerde. Mesela büyük bir proje hazırlıyorsunuz ve birkaç kişi çalışıyorsunuz. Nasıl sorunlar açacağını siz tahmin ettiniz saten. Sözün kısası bu deyimi kullanmamaya çalışalım. RETURN DEYİMİ Türkçe karşılığı "döndürmek, iade etmek" tir. Peki python'a döndürmek ne demektir; Python'da her fonksiyonun bir "dönüş değeri" vardır. Mesela; Bu fonksiyonun dönüş değeri bir tam sayıdır. Yani integer'dir. Eğer şöyle bir fonksiyon tanımlarsak; bir değer döndürmemiş oluruz. Biz açık açık bir değer döndürmesekte python otomatik olarak bu fonksiyonu "None" diye bir değere döndürür. Şimdi biz şu komutu verirsek; print deger Hepsini görmek için tıklayın... 7 None Çıktısını alırız. Bir önceki return kullandığım örnek için aynı komutu verirsek sadece integer değerini alırız; 7 Şimdi bu return deyimi bize nerde lazım olucak? İsterseniz önce bir örnek vereyim; Bu kodlardan çıktı almak istersek çıktımız şu şekilde olucaktır: a'nın degeri: 5 None Bizim istediğimiz şey oldumu? Ekrana sadece "a'nın degeri: 5" yazdırmak istiyorduk ancak bize yukarıdaki çıktıyı verdi. Biz a değişkenini döndürmediğimiz için python otomatik olarak "None" diye bir değer döndürdü. Eğer a değişkenini return deyimi ile döndürmüş olsaydık ekrana sadece "a'nın degeri: 5" yazdıracaktı. PASS DEYİMİ Türkçe karşılığı "geçmek, aşmak" tır. Python'da bu deyimi herhangi bir işlem yapmadan geçeceğimiz durumlarda kullanacağız. Mesela bir örnek verelim: burada eğer kullanıcı 0 değeri girerse bu değer listeye eklenmeyecek, yani python hiç bir işlem yapmadan bu satırı atlayacaktır. Pass deyimini bu durumlarda kullanıyoruz, "hiçbir şey yapmadan yola devam et" anlamı katar kodlarımıza. pass deyimini bir başka durumdada kullanabiliriz. Mesela bir fonksiyon tanımlayacağız. Fonksiyonun adına karar verdik ancak daha içeriğinin ne olacağına karar vermedik. fonksiyonumuzun gövdesini boş bırakamayacağımız için pass deyimini kullanıyoruz. Yani şöyle; Bu dersimizde burada bitmiştir arkadaşlar. Sorularınızı çekinmeden sorabilirsiniz. İyi forumlar...