Programlama yetenekleriniz geliştikçe daha büyük ve karmaşık programlar geliştireceksiniz. Hatta öyle ki yazdığınız kod sayısı oldukça artmaya başlayacak, yeri geldiğinde başkalarının yazdığı fonksiyonları kullanmak zorunda kalacaksınız.
Bu durumda yapılması gereken şey, uzadıkça uzayan kod satırlarını daha anlaşılabilir olması için modüllere ayırmak olacaktır.
Örneğin yazdığınız bir programda hesap işlemleri için yazdığınız bütün fonksiyonları bir dosyada toplayarak yeri geldikçe o dosyayı çağırarak işlem yapabiliriz. Bu bize daha derli toplu çalışma imkanı sağlayacak.
Hatırlarsanız Python için modüler bir dil demiştik. Bu aynı şekilde şu demek; başkalarının yazdığı kodları da yeri geldikçe kullanacaksınız. Yapacağınız işi zaten daha önceden birileri yapmış olabilir, onun kodlarının bir kısmını kullanmak için o kullanıcının programını içeri aktarmanız gerekiyor.
Doğası gereği (girintili yapısı) Python kodlarını kopyala/yapıştır yolu ile programımıza dahil etmek oldukça verimsiz bir yöntemdir. Bunun yerine programı, programımıza dahil ederek lazım olan fonksiyonları kullanmak daha mantıklı bir yöntemdir.
Python ile yazdığınız programlar, yani oluşturduğunuz her .py dosyası birer modüldür. Bu şu demek, yazdığınız bir programı başka bi programa aktardığınızda içerisinde ki değişkenleri, nesneleri, fonksiyonları da aktarmış oluyorsunuz. Hemen basit bir örnek gösterelim.
hesap.py dosyasını oluşturup içerisine aşağıda ki kodları yazın.
def topla(x, y):
return x+y
def cikar(x, y):
return x-y
def carp(x, y):
return x*y
def bol(x, y):
return x/y
Evet, hesap kitap işlerinde kullanacağımız bir modül tasarlamış olduk. Şimdi hesap.py dosyası ile aynı dizinde (aynı klasörde) bir dosya daha oluşturalım (.py dosyası) ve içerisine yazdığımız hesap modülünü aktaralım.
import hesap
sonuc = hesap.topla(5, 7)
print(sonuc)
Bu programı çalıştırıp kaydettiğinizde ekrana 12 sonucunun döküldüğünü göreceksiniz. Yazdığımız hesap.py modülünü (programını) import hesap
diyerek içeri aktardık. Yani 2 temel işlem ile modülleri kullanabilirsiniz.
import diyerek içeri aktardıktan sonra modulIsmi.fonksiyonIsmi diyerek fonksiyonlara ulaşabilirsiniz. Biz 2. satırda hesap modülünün topla fonksiyonuna bu şekilde ulaştık. Şimdi de diğer fonksiyonlara ulaşalım.
sonuc = hesap.cikar(10,2)
print(sonuc)
Burada da modülümüzün çıkar fonksiyonunu kullanmış olduk. Bu şekilde diğer fonksiyonlara da erişebilirsiniz.
Ancak şimdi ortaya şöyle bir sıkıntı çıkıyor. Hemen hesap.py dosyamızın ilk satırına aşağıda ki kodu ekleyin.
print("Bu hesap modulüdür")
Şimdi tekrar aşağıda ki kodu çalıştırın diğer dosyada.
import hesap
sonuc = hesap.topla(5, 7)
print(sonuc)
Gördüğünüz gibi ekrana önce "bu hesap modülüdür" yazısı döküldü sonra işlemini yaptı. Bunun sebebi modülü içeri aktardığınızda her şeyi ile aktarmanızdır.
Pek çok modül bu mantık ile çalışmaz. Ama yine de bu tür durumlardan kurtulmanız için daha rahat bir yöntem vardır, sadece ihtiyacınız olan "fonksiyon" yada nesneleri içeri aktarmak.
from hesap import topla, cikar
sonuc = cikar(5,2)
print(3)
Bu şekilde sadece hesap modülü içerisinde ki topla ve çıkart fonksiyonlarını içeri aktardığımız için diğer kısımlar çalışmayacaktır. Yani bu durumda çarpma ve bölme fonksiyonlarını kullanamazsınız.
Dikkat etmeniz gereken diğer şey hesap modülünü değil topla ve çıkar fonksiyonlarını içeri aktardığımız için cikar fonksiyonunun başına modül ismini eklemememiz. Çünkü modülü değil modül içerisinde ki bir fonksiyonu ekledik sadece.
Modülleri farklı isimler ile programa dahil etmeniz gerekebilir. Bu durumlarda as değimini kullanıyoruz.
import hesap as h
print(h.topla(5, 2)
Modülü içeri aktardık ama isminin h olmasını istedik. Bu yüzden modül ismi program içerisinde h olarak geçmeye başladı. Fonksiyonları da aynı şekilde kullanabilirsiniz.
from hesap import topla as sum
print(sum(5, 7)