Modüller, Python kodumuzu daha organize ve adı üstünde modüler şekilde kullanmamıza olanak sağlar. Basit olarak bir Python modülü içerisinde kodlar barındıran ve kodunuza import yani dahil edebileceğiniz bir python dosyasıdır.
Örnek olarak çok küçük bir python modülü şu şekilde olabilir.
def selam_ver(): print("Selam") return
Yukarıdaki kod parçasını selam.py adıyla kayıt ederek bir modül olarak kullanabiliriz.
# modülümüz dahil ediyoruz import selam selam.selam_ver() # konsola selam yazacaktır
Python bir modülün içinden belirli bir kısmını çağırmamıza da izin verir. Bunun için şu şekilde bir notasyon kullanırız.
import selam_ver from selam selam_ver() # yine konsola Selam yazacaktır.
Python bir modül kullanmak istediğinizde, modüle ait kodları içeren dosyayı bulmak için sırayla şu klasörlere bakar.
- Çalışan python dosyasının içinde bulunduğu klasör
- Burada bulamaz ise PYTHONPATH global değişkenindeki klasörler
- PYTHONPATH tanımlı değil ise Python kaynak dosyalarının bulunduğu klasör
Paketler
Bir Python paketi basit tanımıyla içinde modüller ve bu modülleri çağıran bir __init__.py dosyası bulunduran bir klasördür.
Örneğin; matematik adında bir klasörümüz olsun ve içinde topla.py cikart.py gibi modüllerimiz ve bu modüllerin içinde aynı isimde birer fonksiyon olsun.
# __init__.py dosyamız from .topla import toplama # topla.py içerisinden toplama isimli fonksiyonu çağırıyoruz from .cikart import cikartma from .carp import carpma from .bol import bolme
Matematik paketimizi kullanmak istediğimizde,
# bu kodumuz ile matematik klasörümüzün aynı klasör için bulunması gerekli # ya da matematik paketimizi python un paketler için bakacağı bir klasöre koymamız gerekli import matematik matematik.toplama(3,5) matematik.carpma(2,4)
__init__.py dosyasındaki import ifadelerinde modül adından önce bir nokta işareti var. Bu notasyon ile relative import yapabiliriz. Modülümüzün bulunduğu konumu referans almasını isteyerek o klasördeki ya da bir üst klasördeki bir modülü import edebiliriz.
Kaynak
https://docs.python.org/3/tutorial/modules.html
Bir cevap yazın