python dersleri

Python Modüller

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;

  1. Hazır modüller
  2. 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.

61

Cahit İşleyen

Data Scientist at @Embedica.ai
Python ve Linux sever.
Çay tiryakisi

3 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?