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.