[Bölüm 9] Python’da Modüller ve Paketler

Merhaba arkadaşlar, bu yazımda Python programlama dilinde kullanılan modüllerden ve paketlerden bahsedeceğim.Öncelikle modül dediğimiz şeyler nedir oradan başlayalım.

Modüller

Python programlama dili için konuşursak içerisinde Python kodu içeren her dosya aslında bir modüldür. Bu modüllerin içerisinde Python dilinde tanımlı fonksiyonlar, değişkenler, sınıflar veya kodlar bulunabilir.

Modülleri Aktarma (import etme)

Var olan bir modülü kendi projemize dahil edebilmemiz için o modüle import komutunu uygulamamız gerekir. Örnek vermek gerekirse ornek_module isimli bir modül dosyasını aşağıdaki kod ile dosyamıza dahil ederiz.

import ornek_modul
import math

Aşağıdaki yol ile de modüllerinizi içe aktarabilirsiniz. modul_ismi adlı modülden mod_ismi adlı alt modülü içe aktarır.

from modül_ismi import mod_ismi

Örnek Kod:

from selenium import webdriver

from komutu bir paketten modül alıp içe aktarmak için kullanılır. Buradaki selenium da bir pakettir.

Bir diğer modül içe aktarma yöntemi aşağıdaki gibidir.

from modül_ismi import*

Modülleri başka bir isimle içe aktarma

Aşağıdaki örnek ile modüllere istediğiniz ismi vererek içe aktarım yapabilirsiniz.

import modül_adı as farklı_bir_isim

Modül Oluşturma

Bildiğimiz üzere py uzantısı ile biten dosyalar içerisindeki Python kodlarını Python yüklü sistemlerde çalıştırabiliyor. Modül kısmına gelirsek de py uzantısı ile biten her dosya bir modüldür. O modülü içeri aktarmanız yeterli olacaktır.
Eğer alt modüllere ihtiyaç duyacaksanız bu seferde işin içine paketler girer.

genel paket mantığının elemanları: modül, alt-paket, alt-alt-paket

Paket Oluşturma

Arkadaşlar Python’da kod yazarken bu yazdığımız kodları py uzantılı dosyalar olarak kaydediyoruz ve bu kaydettiğimiz dosyaların birer modül olduğunu da az önce ifade ettim. Şimdi paketin nasıl oluşturulduğuna gelirsek, paket demek birden fazla modül demek ve ben eğer modüllerimi bir klasörde toplarsam o artık benim paketim olmuş olur.
Yani işlevleri birbirine yakın olan 10 tane modülü bir klasöre toplayıp adına a_işlevi diyorum ve sonra işlevleri birbirine yakın olan bir diğer 10 modülü bir klasörde toplayıp adına b_işlevi diyorum. İşte şu an iki tane paket oluşturduk. Tabi paketleri
modüllerin işlevlerine göre ayırıp oluşturmak sizin için hem kolaylık olur hem de bir düzen belirtir.

Paket içerisindeki modülü içeri aktarma

Bunu iki yolla yapabiliriz. Aşağıya örnek iki kod yazıyorum.

import paket.modul
from paket import modul

Hadi gelin birlikte paket yapalım

Şimdi PyCharm editörünü kullanarak deneme paketi isimli bir paket yapacağız.

1) PyCharm açıldıktan sonra üst çubuğun en solundaki File sekmesine basarak New Project alt sekmesine tıklayalım ve elektrikvadisi.net isimli bir proje oluşturalım.
2) Daha sonra sol taraftaki menüde oluşturduğumuz proje olan elektrikvadisi.net sekmesine sağ tıklayarak New seçeğini ardırdan da Python Package seçeneğine tıklayalım.
3) Açılan isim kutusuna deneme_paketi yazalım.
4) Hemen peşinden aynı şekilde deneme paketi yazan kısma sağ tıklayarak New >>> Python Package yolunu izleyelim ve bu pakete de alt_paket adını verelim.
5) deneme_paketi yazan kısma tıklayarak New >>> Python file yolunu izleyelim ve dosyanın adını ust_modul yapalım.
6) Şimdide alt_modul yazan yere tıklayarak New >>> Python file yolunu izleyelim ve dosyanın adını alt_modul yapalım.

Aşağıdaki resimdeki gibi bir durum söz konusu ise paketimizin alt ve üst modüllerini başarıyla oluşturduk demektir.

Şimdi ust_modul.py dosyasının içine aşağıdaki kodları yazalım. Bu kodlar basit birer örnek koddur.

def toplama(a,b):
    try:
        return a + b
    except:
        return 'hata'

Şimdi ise alt_modul.py dosyasına aşağıdaki kodları yazalım.

def kup(n):
    try:
        return n**3
    except return 'hata'

alt_paket klasöründeki __init__.py dosyasına bir kod yazmıyoruz. Boş bırakıyoruz.
deneme paketi klasöründeki __init__.py dosyasına ise aşağıdaki kodları yazıyoruz.

from deneme_paketi.alt_paket.alt_modul import kup
from deneme_paketi.ust_modul import toplama
def kare(n):
    try:
        return n*2
    except:
        return 'hata'

Daha sonra projemiz olan elektrikvadisi.net ismine tıklayarak New >>> Python file diyerek import_denemesi adlı dosya açıyoruz. Aşağıdaki kodları bu dosyaya yazıp çalıştırıyoruz.

import deneme_paketi
from deneme_paketi import*
if __name__=='__main__':
    print(dir(deneme_paketi))
    print(deneme_paketi.kare(17))
    print(deneme_paketi.kare('dört'))
    print(deneme_paketi.kup(7))
    print(deneme_paketi.toplama(3.2,7.8))
    print(dir())
    print(kare(17))
    print(kare('dört'))
    print(kup(7))
    print(toplama(3.2,7.8))

Çıktı:

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'alt_paket', 'kare', 'kup', 'toplama', 'ust_modul']
34
dörtdört
343
11.0
['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'alt_paket', 'deneme_paketi', 'kare', 'kup', 'toplama', 'ust_modul']
34
dörtdört
343
11.0