Merhabalar TürkHackTeam ailesi, uzun aradan sonra Python serisinin 5. konusunu yazma kararı aldım. Sınavlarımdan dolayı pek konu yazamadım fakat artık döndüm tam olarak. Boş vakitlerimde konular yazacağım yine.
Önceki eğitimlere bakmak isterseniz:
Python Eğitimi - Part 1 //"P4RS
Python Eğitimi - Part 2 //"P4RS
Python Eğitimi - Part 3 //"P4RS
Python Eğitimi - Part 4 //"P4RS
İlk 4 seriyi hızlıca çıkartmıştım çünkü farklı bir şey için planlanmıştı stok yapmıştım. Fakat bu 5. seriyi stok yapamadığım için uzun bir süre geçti. Çok uzattım konuya geçelim artık.
Başlangıcı sözlük (dictionary) veri tipi ile yapalım.
Sözlükler geçmiş derslerde gördüğümüz veri tipleri gibi işlerimizi kolaylaştıracaktır. Diğer veri tiplerinde olduğu gibi sözlük veri tipinde de kendine özgü yöntemleri vardır. İlk öncelikle sözlükler nasıl tanımlanır bundan bahsedelim.
Sözlük Nasıl Tanımlanır?
Python'daki sözlük bizlerin gerçek hayatta kullandığı dil sözlüğü gibidir. Yani sözlükte ağaç kelimesini aradığınızda sizlere tree kelimesini çıkaracaktır.
Nasıl tanımladığımıza bir bakın lütfen. Buradaki önemli kısım süslü parantezdir. Örnek olarak veri tipini görmek için:
Gördüğünüz gibi dict dedi yani sözlük. Asıl bomba yer bence burası çünkü çoğu kişi şu anda bu sözlüğün iki ögeden oluştuğunu düşünmektedir. Ancak iki ögeden oluşmamaktadır. Tek bir ögeden oluşmaktadır.
Örnek olarak sözlüğümüzü birden fazla ögeden oluşturabiliriz.
Gördüğünüz gibi burada da sözlüğümüz iki ögeden oluşmaktadır. Fakat birden fazla öge eklerseniz sözlüğünüze ve benim yaptığım gibi yan yana yazarsanız görüntüsü kötü olacaktır. Bunun yerine şu şekilde kullanmanızı tavsiye ederim:
bu şekilde yazarsanız eğer hem siz ileride kodlarınıza baktığınızda neyin ne olduğunu anlayacaksınız hem de kodlarınızı herkese açık paylaştığınızda kodlarınızı inceleyen kişiler anlarken zorluk yaşamayacaktır.
Şimdi sözlüğümüzü oluşturduk fakat sözlüğe nasıl erişeceğiz ki? Haydi gelin birde buna bakalım.
Sözlüğe Erişmek
Üstteki sözlüğümüzden devam edelim isterseniz. Şimdi sözlüğümüzden bir tane öge çağıralım.
gördüğünüz gibi sözlüğümüzden bir tane ögeyi çağırdık yani buradan anlayacağımız şudur, sözlüklerdeki ögeleri çağırmak için:
sozluk[sozlukteki_öge_adı]
Eğer sözlükte bulunmayan bir ögeyi çağırmaya çalışırsanızda sizlere "KeyError" hatasını dönecektir.
Haydi gelin sizlerle bir örnek yapalım ki olayı biraz daha pekiştire bilelim. Örnek olarak adres bilgilerini sözlük yapısı olarak oluşturalım.
Bu şekilde bir sözlük oluşturduk. Şimdi yazdığımız kodu çalıştıralım ve bir isim girelim.
Bizlere adresi verdi çünkü sözlükte böyle bir kişi vardı. Peki böyle bir kişi yoksa ne dönütü verecek?
Tabi ki else ile yazdığımız kod blokunu döndürecektir.
Burada hep karakter dizilerini kullandık ancak sayı dizilerini de kullanabilirsiniz. Bunda herhangi bir hata almazsınız. Örnek olarak şu şekilde:
Sözlük oluşturma ve sözlüklerdeki ögeleri yazdırmayı öğrendik şimdi de sözlüklere öge eklemeye bakalım.
Sözlüklere Öge Ekleme
Sözlüklere öge eklemek kolaydır. Şimdi mantığı şu şekildedir:
sozluk[kelime] = veri
yani örnek üstünde anlatmam gerekirse,
Öge eklemeyi de gördüğümüze göre ögeleri değiştirmeye de bir bakalım isterseniz.
Sözlükte Öge Değiştirme
Sayılar sözlüğümüzden devam edecek olursak eğer buradaki "dört" ögesinindeki sayısal veriyi değiştirelim birlikte.
Gördüğünüz gibi "Dört" ögesindeki sayısal veriyi değiştirdik.
Sözlüklerinde diğer veri tipleri gibi kendine özgü metotları vardır. Örnek verecek olursam
keys()
clear()
copy()
get()
items()
values()
gibi gibi. Bunların bazılarını kullanımını sizlere göstermek istiyorum. İlk olarak keys() ile başlayalım.
Keys()
Sözlükler anahtar-veri olarak çalışmaktadırlar. Yani ilk sözlüklerde ilk tanımladığımız kısım anahtardır ve sonraki ise veridir. Kullanımı oldukça kolaydır.
şeklindedir. Bizlere sadece anahtarları getiriyor.
Values()
keys() methotu sözlüğün anahtarlarını verirken values() metotu iste verileri bizlere verir.
bizlere direk verileri vermektedir.
clear()
İngilizce'de "temizlemek" anlamına gelen "clear" kelimesinden anlamışsınızdır. Oluşturduğumuz sözlükteki ögeleri silmektedir.
Bir tane sözlük oluşturalım tekrardan
Gördüğünüz gibi oluşturduğumuz sözlüğün içindeki ögeleri temizledi.
Bu kadar metot göstereceğim arkadaşlar. Diğer metotların kullanımlarını merak ederseniz eğer: https://www.w3schools.com/python/python_ref_dictionary.asp buraya bakarak öğrenebilirsiniz.
Fonksiyonlar
Şu anki dersimize kadar birçok fonksiyondan bahsettik. Örnek olarak type() fonksiyonu. Tabi ki tek type() fonksiyonundan bahsetmedik, str(), int() fonksiyonları ile tanışmıştık. Şimdi fonksiyon nedir ve ne işimize yarar bunlardan bahsedelim.
Fonksiyon Nedir Ne İşimize Yarar?
Fonksiyonlar, birden fazla ve zor işlemleri bir araya getirilip, tek bir hamlede yapmamızı sağlar. Fonksiyonları kullanarak, birkaç adımdan oluşan işlemleri tek bir isimde bir araya getirmemizi sağlar.
Şimdi sizlerle beraber birkaç örnek ile fonksiyon yapısını pekiştirelim.
print() fonksiyonunu hatırlarsınız. Bizlerden aldığı değerleri ekrana çıktı vermeye yaramaktadır. Ancak burada önemli nokta şurası print() fonksiyonunun tek bir işlevi varmış gibi gözükse de ekrana bastırdığımız parametrelerin arasında boşluk var. Normalde şu şekilde de yazabilirdi ekrana:
veya
print() fonksiyonu ilk öncelikle parametreler arasında boşluk bıraktı (sep), ardından son parametreyi ekrana yazdırdıktan sonra alt satıra geçti (end="\n"), çıktıları ekrana veriyor (file=sys.stdout). Yani birden fazla işlemi tek bir fonksiyon ile yapabiliriz.
Buraya kadar anladıysanız ve kafanızda "tamamda normal bir değişken olarak yazmaktan ne farkı var aynı şey değil mi?" tarzında bir soru oluşmuş olabilir. Bir örnek ile bunu açıklayayım.
Şimdi ekrana yazdırdığımızda direk kullanıcının bilgilerini yazdırıyor. Fakat biz bu kişiyi değiştirmek istediğimizde tekrar tekrar bu yöntemi mi yapacağız? Yani yapılabilir fakat programlama mantığı otomatikleştirmek değil midir birazda? print() fonksiyonu gibi kullanıcı_olustur() fonksiyonumuz olsa güzel olur bence. Haydi gelin beraber bunu oluşturalım.
Fonksiyon Oluşturma ve Kullanımı
Fonksiyon oluşturmakta öyle pat diye olan bir şey değildir. Belirli kurallar çerçevesinde şekillenir. Örnek bir fonksiyon tanımlayalım hep birlikte.
Şimdi ilk baktığınızda bir şey anlamamış olabilirsiniz fakat teker teker anlatacağım. Öncelikle print(), type() gibi bir fonksiyon oluşturduk. Diğer fonksiyonları nasıl kullanıyorsak bu oluşturduğumuz fonksiyonu da aynı şekilde kullanacağız.
Burada dikkatinizi çekmek istediğim şey şu kullandığım IDLE'de kolaylaştırıcı bir olay fonksiyonumuzda kullandığımız metotları bizlere göstermektedir.
Şimdi bizlere çıktı olarak aşağıdaki verileri verdiğini gördük:
Normal şartlarda bunu tek tek yapsaydık eğer 15-20 satıra denk gelecekti ancak şu anda 7 satırla işi bitirdik. Şimdi bu kodlara baktığınızda biraz karışık gibi gelebilir fakat oldukça basit bir yapısı vardır. Buradaki kod yapısından çıkarabileceklerimiz şunlardır:
1- Fonksiyonlar def ile başlamaktadır.
2- Fonksiyonumuza bir isim veriyoruz.
3- Parantez açıyoruz ve istediğimiz argümanları giriyoruz.
4- def ile başlayan fonksiyonu : koyarak bitiriyoruz.
5- Enter'a basınca girintili boşluk oluştuğunu görüyoruz.
6- kullanici_olustur(değer1,değer2,değer3) şeklinde yazılan kısımda girintili boşluğun dışındadır.
6 maddeyi de kendi gözlemleriniz ile çıkartabilirsiniz. Şimdi iki adet önemli nokta var girintili kısım ve girintisiz kısım. Girintili kısım yani
burası da fonksiyonu çağırdığımız yer yani function call'dur. Yani fonksiyonlar iki kısımdan oluşmaktadır. Birinci kısım fonksiyonu oluşturma, ikinci kısım ise fonksiyonu çağırmadır.
Şimdiye kadar öğrenmiş olduğumuz fonksiyonlar type(), print() fonksiyonlarına gömülü builtin functions denmektedir. Python ile beraber geldikleri için bu ismi almaktadırlar.
Fonksiyon Yapısı
Fonksiyonları tanımlamak için def adlı kelimesini kullanarak yapmaktayız.
def bir fonksiyon tanımladığımızı belirtmektedir. kullanici_olustur ise fonksiyonun ismini belirtmektedir. Fonksiyonu çağırırken bu ismi kullanıyoruz. Fonksiyonun sonunda : sonunda ise girintili (4 satırlık boşluk) bir satıra geçmektedir. Fonksiyonda neler yapılacağını buraya yazmaktayız.
Şimdi fonksiyonu oluşturduk ancak fonksiyonu çağırmadık. Gelin bakalım kodumuzu çalıştıralım ve ekrana ne çıktısı verecek acaba?
Tabi ki hiçbir çıktı vermeyecek çünkü biz fonksiyonumuzu çağırmadık. print(), type() fonksiyonlarını düşünün, bu fonksiyonları çağırıp ekrana bir şeyler yazdırıyoruz. Girintili kısımdan çıktıktan sonra fonksiyonu çağırmalıyız.
Başka bir örnek ile pekiştirelim. Toplama işlemi yapalım sizlerle birlikte. Öncelikle toplama isimli bir fonksiyon tanımlayalım. Ardından parametreleri girelim. Ardından iki nokta üst üste koyduktan sonra girintili satıra giriş yapalım. Fonksiyonun ne yapmak istiyorsak bunu belirtelim, ben burada toplama yapacağım için print("Toplamları : ",sayi1+sayi2+sayi3) yazarak belirttiğimiz parametreleri toplamak istediğimizi bildiriyoruz.
Ardından fonksiyonun gövdesinden çıkarak fonksiyondan çıkalım ve fonksiyonu çağıralım.
Fonksiyon yapısı ve oluşturmayı anlattım sizlere. Buradan yola çıkarak daha komplike fonksiyonlar yazabilirsiniz.
Konunun başından beri argüman ve parametre kavramlarından bahsediyordum. Şimdi bunları açıklayalım.
Argüman ve Parametre Nedir?
Parametreler, fonksiyonlarda tanımladığımız parantez içerisinde tanımladığımız parçalardır. Örnek olarak:
toplama() isimli bir adet fonksiyon tanımladık ve üç adet parametre ekledik. Bunlar sayi1, sayi2, sayi3 tür. Bu parametreler fonksiyonun gövdesinde bulunan değişkenlerde kullanılmaktadır. Fonksiyonu çalıştıracak olan kişinin girdiği değerlere göre şekillenecektir.
Parametreler verdiğiniz isimler yaptığı işleme göre şekillenirse daha iyi olur. Yani fonksiyonu çalıştıran kişi, fonksiyonun yaptığı işlemi anlamakta zorlanmamış olur.
Şimdi de fonksiyonu çağıralım:
Fonksiyonu çağırdık ve çıktı olarak bizlere üç değerinde toplamını verdi. Burada değer dediğimiz sayılar argümandır. Fakat genel olarak ikisi birbiri yerine kullanılır. Yani çokta dikkat edilmez.
Fonksiyonlarda sıra çok önemlidir. Yani ilk argümanı girdiğinizde ilk parametre ile özdeşir, ikinci argümanı girdiğinizde ikinci parametre ile özdeşir. Yani sıralamayı doğru yapmalısınız yoksa işler karışır.
Toplama fonksiyonunda pek fazla farkı gözükmese de bir kayıt fonksiyonu oluşturalım ve farkı görelim.
Gördüğünüz gibi çıktılar karıştı. Bu tür parametreler sıralı parametreler denir. Birde sıralı parametreler imiz var. Bunlarda sıra karışsa da sorun olmuyor çünkü siz hangi parametreye denk geleceğini gösteriyor.
Çıktı olarak da sıralı bir şekilde verdi. Gördüğünüz gibi argümanları düzgün bir şekilde verdi.
Bu konum bu kadardı arkadaşlar sonraki konumda fonksiyonlara devam edeceğiz. İyi forumlar
)
Önceki eğitimlere bakmak isterseniz:
Python Eğitimi - Part 1 //"P4RS
Python Eğitimi - Part 2 //"P4RS
Python Eğitimi - Part 3 //"P4RS
Python Eğitimi - Part 4 //"P4RS
İlk 4 seriyi hızlıca çıkartmıştım çünkü farklı bir şey için planlanmıştı stok yapmıştım. Fakat bu 5. seriyi stok yapamadığım için uzun bir süre geçti. Çok uzattım konuya geçelim artık.
Başlangıcı sözlük (dictionary) veri tipi ile yapalım.
Sözlükler geçmiş derslerde gördüğümüz veri tipleri gibi işlerimizi kolaylaştıracaktır. Diğer veri tiplerinde olduğu gibi sözlük veri tipinde de kendine özgü yöntemleri vardır. İlk öncelikle sözlükler nasıl tanımlanır bundan bahsedelim.
Sözlük Nasıl Tanımlanır?
Python'daki sözlük bizlerin gerçek hayatta kullandığı dil sözlüğü gibidir. Yani sözlükte ağaç kelimesini aradığınızda sizlere tree kelimesini çıkaracaktır.
Kod:
>>> sozluk = {"ağaç" : "tree"}
Nasıl tanımladığımıza bir bakın lütfen. Buradaki önemli kısım süslü parantezdir. Örnek olarak veri tipini görmek için:
Kod:
>>> type(sozluk)
<class 'dict'>
Gördüğünüz gibi dict dedi yani sözlük. Asıl bomba yer bence burası çünkü çoğu kişi şu anda bu sözlüğün iki ögeden oluştuğunu düşünmektedir. Ancak iki ögeden oluşmamaktadır. Tek bir ögeden oluşmaktadır.
Kod:
>>> len(sozluk)
1
Örnek olarak sözlüğümüzü birden fazla ögeden oluşturabiliriz.
Kod:
>>> sozluk = {"ağaç" : "tree", "araba" : "car"}
>>> len(sozluk)
2
Gördüğünüz gibi burada da sözlüğümüz iki ögeden oluşmaktadır. Fakat birden fazla öge eklerseniz sözlüğünüze ve benim yaptığım gibi yan yana yazarsanız görüntüsü kötü olacaktır. Bunun yerine şu şekilde kullanmanızı tavsiye ederim:
Kod:
>>> sozluk = {"ağaç" : "tree",
"araba" : "car",
"bilgisayar" : "computer",
"film afişi" : "movie poster"}
>>> len(sozluk)
4
bu şekilde yazarsanız eğer hem siz ileride kodlarınıza baktığınızda neyin ne olduğunu anlayacaksınız hem de kodlarınızı herkese açık paylaştığınızda kodlarınızı inceleyen kişiler anlarken zorluk yaşamayacaktır.
Şimdi sözlüğümüzü oluşturduk fakat sözlüğe nasıl erişeceğiz ki? Haydi gelin birde buna bakalım.
Sözlüğe Erişmek
Üstteki sözlüğümüzden devam edelim isterseniz. Şimdi sözlüğümüzden bir tane öge çağıralım.
Kod:
>>> print(sozluk["ağaç"])
tree
gördüğünüz gibi sözlüğümüzden bir tane ögeyi çağırdık yani buradan anlayacağımız şudur, sözlüklerdeki ögeleri çağırmak için:
sozluk[sozlukteki_öge_adı]
Eğer sözlükte bulunmayan bir ögeyi çağırmaya çalışırsanızda sizlere "KeyError" hatasını dönecektir.
Kod:
>>> print(sozluk["deneme"])
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
print(sozluk["deneme"])
KeyError: 'deneme'
Haydi gelin sizlerle bir örnek yapalım ki olayı biraz daha pekiştire bilelim. Örnek olarak adres bilgilerini sözlük yapısı olarak oluşturalım.
Kod:
adres = {"Ahmet" : "Esentepe mahallesi, Atatürk caddesi, 134. Sokak, 3 / 5, Üsküdar / Istanbul",
"Mehmet" : "Esentepe mahallesi, Atatürk caddesi, 130. Sokak, 3 / 8, Üsküdar / Istanbul",
"Ali" : "Gündoğan mahallesi, Yeşildere caddesi, 40. sokak, 5 / 6, Karesi / Balıkesir"}
isim = input("Adresini öğrenmek istediğiniz kişi: ")
if isim in adres:
cevap = "{} isimli kişinin adresi: {}"
print(cevap.format(isim, adres[isim]))
else:
print("Böyle bir kişinin adresi yoktur.")
Bu şekilde bir sözlük oluşturduk. Şimdi yazdığımız kodu çalıştıralım ve bir isim girelim.
Kod:
Adresini öğrenmek istediğiniz kişi: Ali
Ali isimli kişinin adresi: Gündoğan mahallesi, Yeşildere caddesi, 40. sokak, 5 / 6, Karesi / Balıkesir
Bizlere adresi verdi çünkü sözlükte böyle bir kişi vardı. Peki böyle bir kişi yoksa ne dönütü verecek?
Kod:
Adresini öğrenmek istediğiniz kişi: Alara
Böyle bir kişinin adresi yoktur.
Tabi ki else ile yazdığımız kod blokunu döndürecektir.
Burada hep karakter dizilerini kullandık ancak sayı dizilerini de kullanabilirsiniz. Bunda herhangi bir hata almazsınız. Örnek olarak şu şekilde:
Kod:
>>> sayılar = {"Sıfır" : 0,
"Bir" : 1,
"İki" : 2}
>>> print(sayılar["Sıfır"])
0
Sözlük oluşturma ve sözlüklerdeki ögeleri yazdırmayı öğrendik şimdi de sözlüklere öge eklemeye bakalım.
Sözlüklere Öge Ekleme
Sözlüklere öge eklemek kolaydır. Şimdi mantığı şu şekildedir:
sozluk[kelime] = veri
yani örnek üstünde anlatmam gerekirse,
Kod:
>>> sayılar["Dört"] = 4
>>> print(sayılar["Dört"])
4
Öge eklemeyi de gördüğümüze göre ögeleri değiştirmeye de bir bakalım isterseniz.
Sözlükte Öge Değiştirme
Sayılar sözlüğümüzden devam edecek olursak eğer buradaki "dört" ögesinindeki sayısal veriyi değiştirelim birlikte.
Kod:
>>> sayılar["Dört"] = 5
>>> print(sayılar)
{'Sıfır': 0, 'Bir': 1, 'İki': 2, 'Dört': 5}
Gördüğünüz gibi "Dört" ögesindeki sayısal veriyi değiştirdik.
Sözlüklerinde diğer veri tipleri gibi kendine özgü metotları vardır. Örnek verecek olursam
keys()
clear()
copy()
get()
items()
values()
gibi gibi. Bunların bazılarını kullanımını sizlere göstermek istiyorum. İlk olarak keys() ile başlayalım.
Keys()
Sözlükler anahtar-veri olarak çalışmaktadırlar. Yani ilk sözlüklerde ilk tanımladığımız kısım anahtardır ve sonraki ise veridir. Kullanımı oldukça kolaydır.
Kod:
>>> print(sayılar.keys())
dict_keys(['Sıfır', 'Bir', 'İki', 'Dört'])
şeklindedir. Bizlere sadece anahtarları getiriyor.
Values()
keys() methotu sözlüğün anahtarlarını verirken values() metotu iste verileri bizlere verir.
Kod:
>>> print(sayılar.values())
dict_values([0, 1, 2, 5])
bizlere direk verileri vermektedir.
clear()
İngilizce'de "temizlemek" anlamına gelen "clear" kelimesinden anlamışsınızdır. Oluşturduğumuz sözlükteki ögeleri silmektedir.
Bir tane sözlük oluşturalım tekrardan
Kod:
>>> print(sozluk)
{'araba': 'car', 'ağaç': 'tree', 'film': 'movie'}
>>> sozluk.clear()
>>> print(sozluk)
{}
Gördüğünüz gibi oluşturduğumuz sözlüğün içindeki ögeleri temizledi.
Bu kadar metot göstereceğim arkadaşlar. Diğer metotların kullanımlarını merak ederseniz eğer: https://www.w3schools.com/python/python_ref_dictionary.asp buraya bakarak öğrenebilirsiniz.
Fonksiyonlar
Şu anki dersimize kadar birçok fonksiyondan bahsettik. Örnek olarak type() fonksiyonu. Tabi ki tek type() fonksiyonundan bahsetmedik, str(), int() fonksiyonları ile tanışmıştık. Şimdi fonksiyon nedir ve ne işimize yarar bunlardan bahsedelim.
Fonksiyon Nedir Ne İşimize Yarar?
Fonksiyonlar, birden fazla ve zor işlemleri bir araya getirilip, tek bir hamlede yapmamızı sağlar. Fonksiyonları kullanarak, birkaç adımdan oluşan işlemleri tek bir isimde bir araya getirmemizi sağlar.
Şimdi sizlerle beraber birkaç örnek ile fonksiyon yapısını pekiştirelim.
Kod:
>>> print("P4RS", "THT")
P4RS THT
print() fonksiyonunu hatırlarsınız. Bizlerden aldığı değerleri ekrana çıktı vermeye yaramaktadır. Ancak burada önemli nokta şurası print() fonksiyonunun tek bir işlevi varmış gibi gözükse de ekrana bastırdığımız parametrelerin arasında boşluk var. Normalde şu şekilde de yazabilirdi ekrana:
Kod:
P4RSTHT
Kod:
THTP4RS
print() fonksiyonu ilk öncelikle parametreler arasında boşluk bıraktı (sep), ardından son parametreyi ekrana yazdırdıktan sonra alt satıra geçti (end="\n"), çıktıları ekrana veriyor (file=sys.stdout). Yani birden fazla işlemi tek bir fonksiyon ile yapabiliriz.
Buraya kadar anladıysanız ve kafanızda "tamamda normal bir değişken olarak yazmaktan ne farkı var aynı şey değil mi?" tarzında bir soru oluşmuş olabilir. Bir örnek ile bunu açıklayayım.
Kod:
ad = "Ahmet"
soyad = "Veli"
sehir = "İstanbul"
print("İsminiz: ",ad)
print("Soyadınız: ",soyad)
print("Yaşadığınız Şehir: ",sehir)
Şimdi ekrana yazdırdığımızda direk kullanıcının bilgilerini yazdırıyor. Fakat biz bu kişiyi değiştirmek istediğimizde tekrar tekrar bu yöntemi mi yapacağız? Yani yapılabilir fakat programlama mantığı otomatikleştirmek değil midir birazda? print() fonksiyonu gibi kullanıcı_olustur() fonksiyonumuz olsa güzel olur bence. Haydi gelin beraber bunu oluşturalım.
Fonksiyon Oluşturma ve Kullanımı
Fonksiyon oluşturmakta öyle pat diye olan bir şey değildir. Belirli kurallar çerçevesinde şekillenir. Örnek bir fonksiyon tanımlayalım hep birlikte.
Kod:
def kullanici_olustur(ad,soyad,sehir):
print("İsmi: ",ad)
print("Soyadı: ",soyad)
print("Yaşadığı Şehir: ",sehir)
Şimdi ilk baktığınızda bir şey anlamamış olabilirsiniz fakat teker teker anlatacağım. Öncelikle print(), type() gibi bir fonksiyon oluşturduk. Diğer fonksiyonları nasıl kullanıyorsak bu oluşturduğumuz fonksiyonu da aynı şekilde kullanacağız.
Burada dikkatinizi çekmek istediğim şey şu kullandığım IDLE'de kolaylaştırıcı bir olay fonksiyonumuzda kullandığımız metotları bizlere göstermektedir.
Kod:
def kullanici_olustur(ad,soyad,sehir):
print("İsmi: ",ad)
print("Soyadı: ",soyad)
print("Yaşadığı Şehir: ",sehir)
print("*"*15)
kullanici_olustur("Ahmet","Veli","İstanbul")
kullanici_olustur("Alara","Deniz","Bursa")
Şimdi bizlere çıktı olarak aşağıdaki verileri verdiğini gördük:
Normal şartlarda bunu tek tek yapsaydık eğer 15-20 satıra denk gelecekti ancak şu anda 7 satırla işi bitirdik. Şimdi bu kodlara baktığınızda biraz karışık gibi gelebilir fakat oldukça basit bir yapısı vardır. Buradaki kod yapısından çıkarabileceklerimiz şunlardır:
1- Fonksiyonlar def ile başlamaktadır.
2- Fonksiyonumuza bir isim veriyoruz.
3- Parantez açıyoruz ve istediğimiz argümanları giriyoruz.
4- def ile başlayan fonksiyonu : koyarak bitiriyoruz.
5- Enter'a basınca girintili boşluk oluştuğunu görüyoruz.
6- kullanici_olustur(değer1,değer2,değer3) şeklinde yazılan kısımda girintili boşluğun dışındadır.
6 maddeyi de kendi gözlemleriniz ile çıkartabilirsiniz. Şimdi iki adet önemli nokta var girintili kısım ve girintisiz kısım. Girintili kısım yani
Kod:
def kullanici_olustur(ad,soyad,sehir):
print("İsmi: ",ad)
print("Soyadı: ",soyad)
print("Yaşadığı Şehir: ",sehir)
print("*"*15)
burası fonksiyonun tanım kısmıdır yani function definition ikinci kısım yani girintisiz kısım
kullanici_olustur("Ahmet","Veli","İstanbul")
kullanici_olustur("Alara","Deniz","Bursa")
burası da fonksiyonu çağırdığımız yer yani function call'dur. Yani fonksiyonlar iki kısımdan oluşmaktadır. Birinci kısım fonksiyonu oluşturma, ikinci kısım ise fonksiyonu çağırmadır.
Şimdiye kadar öğrenmiş olduğumuz fonksiyonlar type(), print() fonksiyonlarına gömülü builtin functions denmektedir. Python ile beraber geldikleri için bu ismi almaktadırlar.
Fonksiyon Yapısı
Fonksiyonları tanımlamak için def adlı kelimesini kullanarak yapmaktayız.
Kod:
def kullanici_olustur(ad,soyad,sehir):
def bir fonksiyon tanımladığımızı belirtmektedir. kullanici_olustur ise fonksiyonun ismini belirtmektedir. Fonksiyonu çağırırken bu ismi kullanıyoruz. Fonksiyonun sonunda : sonunda ise girintili (4 satırlık boşluk) bir satıra geçmektedir. Fonksiyonda neler yapılacağını buraya yazmaktayız.
Şimdi fonksiyonu oluşturduk ancak fonksiyonu çağırmadık. Gelin bakalım kodumuzu çalıştıralım ve ekrana ne çıktısı verecek acaba?
Tabi ki hiçbir çıktı vermeyecek çünkü biz fonksiyonumuzu çağırmadık. print(), type() fonksiyonlarını düşünün, bu fonksiyonları çağırıp ekrana bir şeyler yazdırıyoruz. Girintili kısımdan çıktıktan sonra fonksiyonu çağırmalıyız.
Başka bir örnek ile pekiştirelim. Toplama işlemi yapalım sizlerle birlikte. Öncelikle toplama isimli bir fonksiyon tanımlayalım. Ardından parametreleri girelim. Ardından iki nokta üst üste koyduktan sonra girintili satıra giriş yapalım. Fonksiyonun ne yapmak istiyorsak bunu belirtelim, ben burada toplama yapacağım için print("Toplamları : ",sayi1+sayi2+sayi3) yazarak belirttiğimiz parametreleri toplamak istediğimizi bildiriyoruz.
Ardından fonksiyonun gövdesinden çıkarak fonksiyondan çıkalım ve fonksiyonu çağıralım.
Kod:
def toplama(sayi1,sayi2,sayi3):
print("Toplamları: ",sayi1+sayi2+sayi3)
toplama(20,233,214)
Fonksiyon yapısı ve oluşturmayı anlattım sizlere. Buradan yola çıkarak daha komplike fonksiyonlar yazabilirsiniz.
Konunun başından beri argüman ve parametre kavramlarından bahsediyordum. Şimdi bunları açıklayalım.
Argüman ve Parametre Nedir?
Parametreler, fonksiyonlarda tanımladığımız parantez içerisinde tanımladığımız parçalardır. Örnek olarak:
Kod:
def toplama(sayi1,sayi2,sayi3):
print("Toplamları: ",sayi1+sayi2+sayi3)
toplama() isimli bir adet fonksiyon tanımladık ve üç adet parametre ekledik. Bunlar sayi1, sayi2, sayi3 tür. Bu parametreler fonksiyonun gövdesinde bulunan değişkenlerde kullanılmaktadır. Fonksiyonu çalıştıracak olan kişinin girdiği değerlere göre şekillenecektir.
Parametreler verdiğiniz isimler yaptığı işleme göre şekillenirse daha iyi olur. Yani fonksiyonu çalıştıran kişi, fonksiyonun yaptığı işlemi anlamakta zorlanmamış olur.
Şimdi de fonksiyonu çağıralım:
Kod:
toplama(20,233,214)
Fonksiyonu çağırdık ve çıktı olarak bizlere üç değerinde toplamını verdi. Burada değer dediğimiz sayılar argümandır. Fakat genel olarak ikisi birbiri yerine kullanılır. Yani çokta dikkat edilmez.
Fonksiyonlarda sıra çok önemlidir. Yani ilk argümanı girdiğinizde ilk parametre ile özdeşir, ikinci argümanı girdiğinizde ikinci parametre ile özdeşir. Yani sıralamayı doğru yapmalısınız yoksa işler karışır.
Toplama fonksiyonunda pek fazla farkı gözükmese de bir kayıt fonksiyonu oluşturalım ve farkı görelim.
Kod:
def kayit_olusturma(ad,soyad,sehir):
print("Ad: ",ad)
print("Soyad: ",soyad)
print("Şehir: ",sehir)
kayit_olusturma("İstanbul","Can","Veli")
Ad: İstanbul
Soyad: Can
Şehir: Veli
Gördüğünüz gibi çıktılar karıştı. Bu tür parametreler sıralı parametreler denir. Birde sıralı parametreler imiz var. Bunlarda sıra karışsa da sorun olmuyor çünkü siz hangi parametreye denk geleceğini gösteriyor.
Kod:
def kayit_olusturma(ad,soyad,sehir):
print("Ad: ",ad)
print("Soyad: ",soyad)
print("Şehir: ",sehir)
kayit_olusturma(ad="Can", sehir="Ankara", soyad="Veli")
Çıktı olarak da sıralı bir şekilde verdi. Gördüğünüz gibi argümanları düzgün bir şekilde verdi.
Bu konum bu kadardı arkadaşlar sonraki konumda fonksiyonlara devam edeceğiz. İyi forumlar
Son düzenleme:





