Merhaba Arkadaşlar,
Mobilhanem.com da Python Eğitimi Serisinin bu dersinde Python Modüller dersi ile birlikteyiz. Bu derste Python da çok önemli konulardan biri olan modül kavramının ne olduğunu, nasıl kullanıldığını ve kendi modüllerimizi nasıl oluşturacağımızı göreceğiz. Keyifli okumalar.
Modül Nedir?
Biz Python eğitimi serisi boyunca hep kod tekrarından kaçınmıştık. Bunun için fonksiyon ve sınıfları kullanmıştık. Peki bu fonksiyonları veya sınıfları başka bir projede kullanabilir miyiz? İşte bizde bu derste bu konuyu biraz daha derinden işleyeceğiz. Hemen modüllerin tanımını yapayım; modüller fonksiyon, sınıf ve özelliklerin bir arada bulunduğu Python dosyalarıdır. Siz bu dosyaları istediğiniz projede çağırıp kullanabilirsiniz. Aklınız karıştı dimi evet yanlış duymadınız Python da oluşturduğunuz her bir dosya aslında bir modüldür.
Python da iki çeşit modül var;
- Hazır modüller
- Kendi oluşturduğumuz modüller.
Biz bu derste kendi modülümüzü oluşturacağız. Bir sonraki derslerde ise hazır modülleri işleyeceğiz. Peki biz bu modülleri kullanmak zorunda mıyız? Eğer modül kullanırsak ne gibi avantaj ve dezavantajlarını görürüz modüllerin? O zaman hemen bir başlık atalım.
Neden Modüller?
Büyük ve üzerinde çok fazla geliştirici çalışan projeler genel olarak modüllere Türkçe kaşılığı ile parçalara ayrılır. Bu sayede parçalara ayrılan projede bize bu tür avantajları sağlar.
- Modüller kod tekrarını ünler.
- Modüller projemizi daha okunabilir olmasını sağlıyor.
- Modüller yapıda projeyi değiştirmek, güncellemek, yeni modüller eklemek basittir.
- Modüller yapıda projede bakım kolaydır.
- Modüller aynı projede birden fazla kişinin çalışmasına imkan sağlıyor.
Python Modül Oluşturmak ve Projeye Dahil Etme
Biz zaten oluşturduğumuz Python sayfasının bir modül olduğunu biliyoruz dimi o zaman hemen yeni bir dosya oluşturalım;
Bu dosyamız moduls.py adında bir Python dosyası.
İçine şu şekilde oluşturduğumuz fonksiyonu ekliyoruz.
def yazdir(): print("Merhaba Dünya")
Şimdi başka bir Python dosyası daha oluşturuyoruz. Bu dosyaya da main.py diyoruz. Biz oluşturmuş olduğumuz modülleri burada kullanacağız.
Şimdi oluşturduğumuz moduls.py dosyasını yani modülünü çağırıyoruz.
Genel kullanım şekli;
import moduls_name
bizde hemen ekleyelim.
import moduls
Şimdi dilerseniz bu modülün içinde ne olduğuna bakalım. Bir önceki derslerimizde birçok defa kullandığımız dir() fonksiyonunu kullanıyoruz.
main.py modülümüz şu çekilde;
import moduls print(dir(moduls))
Çıktı:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'yazdir']
Bir önceki derslerimizde “__” ile başlayan fonksiyonların özel fonksiyon olduğunu söylemiştik. Dikkat ederseniz listenin son elemanı bizim oluşturduğumuz yazdir() fonksiyonu bulunmakta.
Peki bu fonksiyonu kullanabiliyor muyuz? Hemen bakalım.
import moduls moduls.yazdir() Çıktı: Merhaba Dünya
Görüldüğü gibi başarılı bir şekilde oluşturduğumuz fonksiyonları kullandık. Peki sınıfları nasıl kullanacağız hemen görelim.
Onun için moduls.py dosyasının içine geliyoruz. Eğer Python OOP kavramlarını bilmiyorsanız lütfen ilk önce bu derslere bakın.
class Ogrenci(): def __init__(self,adi,soyadi,numarasi): self.ad = adi self.soyad = soyadi self.numara = numarasi def bilgiler(self): print("Adi: {}\nSoyadi: {}\nNumarasi: {}".format(self.ad,self.soyad,self.numara)) ogr = Ogrenci("Mustafa","KAYA",656) ogr.bilgiler()
Şimdi main.py sayfasında oluşturduğumuz sınıfı çalıştıralım.
Burada dikkat etmemiz gereken nokta oluşturduğumuz sınıf’tan bir obje oluşturuyoruz aksi takdirde oluşturduğumuz Ogrenci() sınıfı soyut bir kavram olduğu için bu sınıfı kullanamayız.
Hemen modul.py sayfasına geliyoruz ve tekrar modülü çağırıyoruz.
import moduls
Şimdi main.py modülünü çalıştıralım.
Adi: Mustafa Soyadi: KAYA Numarasi: 569
Şeklinde bir çıktı aldık. Burada dikkat edeceğiniz nokta biz moduls.py sayfasında daha önce öğrenci sınıfı objesi oluşturduğumuz ve çağırdığımız için modul.py modülünü çağırdığımız zaman Ogrenci() sınıfı otomatik olarak çalıştı. Peki biz modülü eklediğimiz projede istediğimiz zaman çağırıp kullanmak istiyorsak ne yapmalıyız.
Bunun için moduls.py sayfasında değil main.py sayfasında objemizi oluşturuyoruz.
import moduls ogr = moduls.Ogrenci("Mustafa","KAYA",456) ogr.bilgiler()
başka bir çağırma yöntemi ise şu şekilde;
import moduls moduls.Ogrenci("Mustafa","KAYA",456).bilgiler()
Çıktı:
Adi: Mustafa Soyadi: KAYA Numarasi: 456
İstediğiniz şekilde kullanabilirsiniz. Ama ilk önce Python OOP mantığını iyice pekiştirmeniz şiddetle tavsiye ediyorum.
Şimdi gelelim dikkat edilecek başka bir noktaya daha. Biz az önce bir modülü projeye dahil ederken şu şekilde bir syntax yapısını kullanmıştık.
İmport modül_adi
Bu kullanım bir standart kullanım şeklidir. Başka kullanım yöntemleri de var. Hemen bakalım.
Örneğin çağırdığınız modül ismi çok uzunsa ve kullanımı çok zor ise şu şekilde proje ekleyebilirsiniz.
import modul_adi as takma_adi
Yani modülümüz bir takma isim verdik. Hemen kullanalım.
import moduls as mod mod.Ogrenci("Mustafa","KAYA",456).bilgiler()
Çıktı:
Adi: Mustafa Soyadi: KAYA Numarasi: 456
Başka bir yöntem daha yapalım mesela biz modül içindeki bütün fonksiyon ve sınıfları çağırmak istemiyoruz sadece ihtiyacımız olan fonksiyon ve sınıfları çağırmak istiyorsak şu şekilde yapıyoruz.
From modül_ad import fonksiyon,sınıf
hemen kullanalım.
from moduls import yazdir
Biz burada modul.py içindeki yazdir() fonksiyonunu çağırdığımız için sadece bu fonksiyonu kullanabiliyoruz. Ogrenci() sınıfını kullanamayız. Eğer kullanmak istiyorsak Ogrenci() sınıfını da ekliyoruz. Şu şekilde;
from moduls import yazdir,Ogrenci
Peki modül içinde belki 100 tane fonksiyon veya sınıf varsa hepsini teker teker mi ekleyeceğiz. Tabi ki hayır zaten az önce bunu yapmıştık.
import moduls
şeklinde veya
from moduls import *
Böylelikle artık kendi modüllerimiz oluşturabiliyor ve bir projeye dahil edebiliyoruz. Bir sonraki dersimizde hazır modüllerin ne olduğunu ve nasıl kullanıldığını öğreneceğiz
Eksik yada yanlış gördüğünüz yerler için iletişime geçmekten çekinmeyin. Dilerseniz Soru-Cevap bölümünden Python ile ilgili sorularınızı sorabilirsiniz.
Tüm Python Derslerine buradan ulaşabilirsiniz.
62