Python'da Fonksiyonlarla Çalışmak

python fonksiyonlar
Değerli arkadaşlar tekrar merhaba. Python ile ilgili olan yazılarıma hız kesmeden devam ediyorum. Bir önceki yazımda python ile bir metin belgesine istediğimiz veriyi yazdık ve istediğimiz metin belgesini satır satır okumuştuk. Bu yazım içerisinde fonksiyonlar ile çalışmasını göstereceğim. Bunu yaparken de bir önceki yazıma atıfta bulunacağım. Bu yüzden bir önceki yazıma buradan göz atmanızda fayda var. 

Kod yazmaya başlamadan önce fonksiyonların ne olduğundan bahsetmek istiyorum. Fonksiyonlar yazılım dillerinde bir görevi yerine getirmek için oluşturulmuş kodlar bütünüdür. Gerektiğinde parametre alabilir ve gerektiğinde dışarıya bir değer döndürebilir. Bu yazım içerisinde kullanırken herhangi bir parametre almayacaklar veya dışarıya herhangi bir değer döndürmeyecekler ama genel anlamda nasıl kullanıldığını görmüş olacağız.

Bir önceki yazım olan Python Text Dosyası Okuma ve Yazma isimli yazımda fonksiyonları kullanmadan çok basit düzeyde kodlar yazmıştık. Örneğin dosya yazma işlemini yaparken;

# Python text dosyasına veri yazmak
  
verilerimiz = ["Yazar: Batuhan KENGER\n", "Konu: Python ile text dosyasina veri yazmak\n"]
  
# dosyaya yazıyoruz
dosyamiz = open('dosyamiz.txt', 'w')
dosyamiz.writelines(verilerimiz)
dosyamiz.close()

kodlarını, dosyayı satır satır okumak için ise;

dosyamiz = open('dosyamiz.txt', 'r')
satirlar = dosyamiz.readlines()

#print(satirlar)

sayac = 0
for satir in satirlar:
    sayac += 1
    print("Satır {}: {}".format(sayac, satir.strip()))

kodlarını yazmıştık. Şimdi gelin hep beraber bu kodları birer fonksiyon haline getirelim ve kullanmaya çalışalım. 

İlk olarak dosya yazma işlemi için yazdığım fonksiyonu paylaşmak istiyorum. Yorum satırlarında açıklamaları bulabilirsiniz.

def dosyaYaz(): # dosyaYaz adında bir fonksiyon oluşturdum
    verilerimiz = [] # verilerimiz adında boş bir liste tanımladım
    icerikY = input("icerigi yaziniz: ") # kullanıcıdan veri alabilmek için input kullandım ve bunu icerikY isimli değişkene attım.
    dosyaAdiY = input("dosya adini yaziniz: ") 
    verilerimiz.append(icerikY) # append komutu ile icerikY'yi verilerimiz listesine attım
    dosyamizY = open(dosyaAdiY + '.txt', 'w') # kullanıcının yazdığı dosya adı ile yeni bir txt dosyasını yazma modunda açtım
    dosyamizY.writelines(verilerimiz) # writelines komutu ile verilerimiz listesini satır satır dosyama yazıyorum
    dosyamizY.close() # dosyamı kapatıyorum

Elimden geldiğince yorum satırı kullanarak açıklamaya çalıştım ama siz yine de kodlar üzerinde oynayarak pratik yapmaya çalışın. Şimdi ise bir text dosyasını satır satır okumak için yazdığım fonksiyonu paylaşacağım.

def dosyaOku():
    dosyaAdiO = input("okumak istediginiz dosya adini yaziniz: ")
    dosyamizO = open(dosyaAdiO + '.txt', 'r')
    satirlarO = dosyamizO.readlines()
    sayac = 0
    for satir in satirlarO:
        sayac += 1
        print("Satır {}: {}".format(sayac, satir.strip()))

Bir önceki yazımda bu kodlar için zaten yeterince açıklama yapmıştım. O yüzden yorum satırı kullanmadım. 

Gördüğünüz gibi iki işlem için de fonksiyonlarımızı yazmış olduk. Bu şekilde bırakarak çalıştırırsak python kodlarımız çalışır vaziyette olacaklar ama hiçbir hareketlilik göremeyeceğiz çünkü fonksiyonlarımızı hiçbir yerde çağırmadık. Fonksiyonları kullanabilmek için bir yerlerde çağırmış olmamız gerekiyor. İstersek tek tek fonksiyonlarımızı python kodlarımızın en altında birer defa çağırabiliriz ve sırasıyla çalışırlar. Ancak bu yine mantıklı bir çözüm değil. Gelin biz bu işlemleri kullanıcıya seçtirmeye çalışalım ve gerçek bir program yazmış olalım. Kullanıcı dosya okumak mı istiyor yoksa veri yazmak mı istiyor bu işlemi kendisi seçmiş olsun. 

Bu işlem içinse başka bir fonksiyon yazdım ve yorum satırları ile açıklamaya çalıştım. Kodu aşağıda bulabilirsiniz.

def baslangic():
    komut = input('Dosya okumak mi yazmak mi istersin? (O/Y) : ')
    if (komut=='O'): # eğer kullanıcı büyük o harfine basarsa
        dosyaOku() # dosya okumak için yazdığımız fonksiyon çağırılıyor
    elif(komut == 'Y'): # eğer kullanıcı büyük y harfine basarsa
        dosyaYaz() # dosya yazmak için yazdığımız fonksiyon çağırılıyor 
    else: # eğer yukardakiler dışında bir tuşa basmışsa
        print('Lütfen gecerli bir giris yapiniz!') # uyarı mesajı veriliyor ve
        baslangic() # bu fonksiyon tekrar çağrılıyor

Yazmış olduğumuz son fonksiyon ile tüm fonksiyonlarımıza tek bir yerden erişebilir olduk. Yani sadece son fonksiyonumuzu çağırarak programı kullanabiliriz ve öyle de yapacağız. Aşağıda bu proje için gereken tüm kodları bütün olarak paylaştım.

def dosyaYaz(): 
    verilerimiz = [] 
    icerikY = input("icerigi yaziniz: ") 
    dosyaAdiY = input("dosya adini yaziniz: ") 
    verilerimiz.append(icerikY) 
    dosyamizY = open(dosyaAdiY + '.txt', 'w') 
    dosyamizY.writelines(verilerimiz) 
    dosyamizY.close() 

def dosyaOku():
    dosyaAdiO = input("okumak istediginiz dosya adini yaziniz: ")
    dosyamizO = open(dosyaAdiO + '.txt', 'r')
    satirlarO = dosyamizO.readlines()
    sayac = 0
    for satir in satirlarO:
        sayac += 1
        print("Satır {}: {}".format(sayac, satir.strip()))

def baslangic():
    komut = input('Dosya okumak mi yazmak mi istersin? (O/Y) : ')
    if (komut=='O'): 
        dosyaOku() 
    elif(komut == 'Y'): 
        dosyaYaz()  
    else: 
        print('Lütfen gecerli bir giris yapiniz!')
        baslangic()
    

if __name__ == "__main__":
   baslangic()

Bu kodlar çalıştırıldığında ilk önce kullanıcıya hangi işlemi yapmak istediği sorulacak ve ona göre işlemler sırasıyla gerçekleştirilecek. Umarım faydalı bir yazı olmuştur. Anlamadığınız yerler için yorumlar kısmından benimle iletişime geçebilirsiniz.

Sevdiği işi yapan birinin yazısını okudunuz. Eğer herhangi bir şikayetiniz veya öneriniz varsa lütfen bunu yorumlarda belirtin. Yeni bir konuda görüşmek dileğiyle. İyi çalışmalar.
Elektrik Elektronik Mühendisiyim. Bu alanlarda ödev, proje yaptırmak isterseniz veya özel ders almak isterseniz sitemin iletişim sayfasından benimle iletişime geçebilirsiniz.

Yorum Gönder