Python yorumlayıcısını kapatıp tekrar açarsanız yaptığınız tanımlar
(işlevler ve değişkenler) kaybolur. Uzunca bir program yazmak isterseniz
bunun için programınızı bir metin düzenleyici ile hazırlayıp yazdığınız
dosyayı yorumlayıcı girişi olarak kullanırsanız daha iyi olur. Bu işleme
betik yazmak denir. Programınız uzadıkça bunu daha kolay idare etmek için
birkaç dosyaya bölmek isteyebilirsiniz. Yazdığınız bir işlev tanımını
kopyalamaya ihtiyaç duymaksızın birkaç programda kullanmayı da
isteyebilirsiniz.
Bu iş için Python'da modül denen dosyalar var. Bunlara yazılan tanımlar
diğer modüllere ya da etkileşimli kipteki yorumlayıcıya import
deyimi ile yüklenebilirler.
Modüller .py uzantılı metin dosyalarıdır ve içlerinde
Python deyimleri ve tanımları bulur. Bir modül içerisinde
__name__ global değişkeninin değeri (bir dizge) o
modülün adını verir. Örneğin, favori metin düzenleyiciniz ile
fibo.py adlı bir dosya yaratıp Python yorumlayıcısının
bulabileceği bir dizine kaydedin. Dosyanın içeriği de şu olsun:
# Fibonacci sayıları modülü
def fib(n): # n e kadar Fibonacci serisini yazdır
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
def fib2(n): # n e kadar Fibonacci serisi geri döndürür
sonuc = []
a, b = 0, 1
while b < n:
sonuc.append(b)
a, b = b, a+b
return sonuc
Yorumlayıcıyı açıp bu modülü şu komut ile yükleyin:
Bu fibo içindeki işlev tanımlarını yürürlükte olan simge tablosuna
eklemez; sadece modül adı fibo tabloya eklenir. İşlevlere modül adı
kullanarak erişilebilir:
>>> fibo.fib(1000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'
Bir işlevi sık sık kullanmak isterseniz bunu yerel bir isme
atayabilirsiniz:
>>> fib = fibo.fib
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377