Resim

Python Modüller ve Paketler

Python Modüller ve Paketler: Büyük Projeleri Organize Etmek

Neden Koda İhtiyaç Vardır?

Büyük bir yazılım projesini tek bir dosya (main.py) içinde yazmaya çalışmak, kodu yönetilemez ve okunamaz hale getirir. Modüller ve Paketler, kodumuzu mantıksal olarak bölümlere ayırarak bu sorunu çözer.

  • Modül: Tek bir Python dosyasıdır (.py).

  • Paket: İlgili modülleri düzenleyen bir klasör yapısıdır.

1. Modüller (Modules): Tek Bir Dosya

Modül, basitçe bir Python dosyasıdır (fonksiyonlar.py, hesaplama.py). Bu dosya, fonksiyonlar, sınıflar, değişkenler ve çalıştırılabilir kod içerebilir.

A. import İfadesi

Başka bir modüldeki kodları kendi dosyanıza dahil etmek için kullanılır.

Söz DizimiAçıklamaÖrnek
import module_nameModülü olduğu gibi yükler. İçindeki öğelere modül adı üzerinden erişilir.math.sqrt(4)
import module_name as aliasModüle kısa bir takma ad (alias) verir.import pandas as pd
from module import itemModül içindeki sadece belirli bir fonksiyonu veya sınıfı yükler. Öğeye doğrudan erişilir.from math import sqrt $\rightarrow$ sqrt(4)
from module import *[Kötü Uygulama!] Modüldeki tüm öğeleri içeri aktarır. Ad çakışmalarına neden olabilir.from math import * $\rightarrow$ sqrt(4)

B. Modülün Kendi Adını Anlama (if __name__ == "__main__":)

Bir Python dosyasını hem modül olarak (başka bir yerden içe aktarılmak üzere) hem de bağımsız program olarak (terminalden çalıştırılmak üzere) kullanmak isteyebiliriz.

  • __name__: Python'ın her dosyaya atadığı özel değişkendir.

    • Dosya doğrudan çalıştırılırsa, __name__ değeri "__main__" olur.

    • Dosya başka bir modül tarafından içe aktarılırsa, __name__ değeri dosyanın adı olur.

Kullanım Amacı: Bu yapı, modül olarak kullanıldığında çalışmasını istemediğimiz test kodlarını veya başlatma komutlarını korumak için kullanılır.

# ornek_modul.py
def selam_ver(isim):
    print(f"Merhaba, {isim}")

if __name__ == "__main__":
    # Bu blok sadece 'python ornek_modul.py' komutuyla çalışır.
    # Başka bir dosyaya import edildiğinde çalışmaz.
    print("Modül doğrudan çalıştırıldı.")
    selam_ver("Dünya")

2. Paketler (Packages): Klasörlerle Organizasyon

Paketler, birbiriyle ilişkili modülleri gruplayan ve daha büyük bir yapıda düzenleyen klasörlerdir.

A. Paket Yapısı

Bir klasörün Python paketi olarak tanınabilmesi için geleneksel olarak __init__.py adında boş bir dosya içermesi gerekirdi (Python 3.3 sonrası bu zorunluluk kalksa da, hala iyi bir uygulamadır).

proje_ana_dizin/
├── main.py
└── hesaplamalar/             # <- Bu bir PAKET
    ├── __init__.py           # <- Paketi tanımlar
    ├── temel_islemler.py     # <- Modül 1
    └── ileri_islemler.py     # <- Modül 2

B. Paketlerden İçe Aktarma

Paket içindeki modülleri veya öğeleri içe aktarırken nokta (.) notasyonu kullanılır.

# main.py dosyasında:
# 1. Paketin içindeki tüm modülü import etme
import hesaplamalar.temel_islemler 
sonuc = hesaplamalar.temel_islemler.topla(5, 3) 

# 2. Belirli bir modülden belirli bir fonksiyonu import etme
from hesaplamalar.ileri_islemler import carp

# 3. Kısaltma ile import etme
from hesaplamalar import temel_islemler as ht

C. __init__.py Dosyasının Rolü

Bu dosya paketin bir parçası olduğunu belirtir. İçine kod yazılabilir:

  • Basit İçe Aktarma: Paket seviyesinde daha kolay erişim sağlamak için alt modülleri buraya taşıyabilirsiniz.

# hesaplamalar/__init__.py içeriği:
from .temel_islemler import topla
from .ileri_islemler import kok_al

# main.py dosyasında, paket seviyesinde erişim:
from hesaplamalar import topla 
# Hesaplamalar paketi içinden doğrudan topla fonksiyonu

3. Modül Arama Yolu (sys.path)

Python, bir import komutu verildiğinde modülü nerede arayacağını belirleyen bir yollar listesine sahiptir. Bu listeye sys.path denir.

  1. Mevcut dizin (içinde bulunduğunuz klasör)

  2. Python'ın standart kütüphane dizinleri

  3. PYTHONPATH ortam değişkeni ile tanımlanmış dizinler

Modüller ve Paketler, büyük projelerde kod tekrarını azaltır, kodun bakımını kolaylaştırır ve okunabilirliği artırır. Python'da başarılı olmak için bu yapısal organizasyonu anlamak şarttır.

🔥 Python Kariyerinizi Hemen Başlatın!

Hemen kursumuza kaydolun ve bu güçlü araçları kullanarak profesyonel Python geliştiricisi olma yolunda ilk adımı atın. Kursumuzdaki uygulamalı modüller, sizi sadece bir yazılımcı adayı değil, hazır bir profesyonel haline getirecek. Python Eğitimini Udemy platformunda bulabilirsiniz.

[ Python Eğitimi Sıfırdan İleri Seviye ]

Tıklayın ve Python Eğitimine Hemen Kaydolun!

Yorumlar

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?