Bu makalede, Python’da özel modüller oluşturmayı ve içe aktarmayı öğreneceksiniz. Ayrıca, Python’da özel ve yerleşik modülleri almak ve kullanmak için farklı teknikler bulacaksınız.
Python’daki modüller nelerdir?
Modüller, Python deyimlerini ve tanımlarını içeren bir dosyaya başvurur.
Örneğin: ornek.py gibi Python kodunu içeren bir dosyaya modül adı verilir ve modül adı örnek olur.
Büyük programları küçük yönetilebilir ve organize dosyalara bölmek için modüller kullanıyoruz. Ayrıca, modüller kodun yeniden kullanılabilirliğini sağlar.
Tanımlarını farklı programlara kopyalamak yerine, en çok kullandığımız fonksiyonları bir modülde tanımlayabilir ve içe aktarabiliriz.
Python Modül Oluşturma
Bir modül oluşturalım. Aşağıdakileri yazın ve ornek.py olarak kaydedin.
1 2 3 4 5 6 7 8 | # Python Module Örneği def topla(a, b): """Bu program iki sayıyı toplar ve toplanan değerleri döndürür""" sonuc = a + b return sonuc |
Burada ornek
adındaki bir modülün içinde topla()
fonksiyonunu tanımladık. Fonksiyon iki sayı alır ve toplamlarını döndürür.
Python’da modüller dahil edilir?
Bir modül içindeki tanımları başka bir modüle veya Python’daki interaktif yorumlayıcıya aktarabiliriz.
Bunu yapmak için import
anahtar sözcüğünü kullanırız. Önceden tanımlanmış modül örneğimizi içe aktarmak için Python bilgi istemine aşağıdakileri yazıyoruz.
1 2 3 | >>> import ornek |
Bu, doğrudan geçerli sembol tablosuna örnekte tanımlanan işlevlerin adlarını girmez. Oraya sadece modül adı örneğini girer.
Modül adını ile fonksiyona noktayı kullanarak erişebiliriz.
Örneğin:
1 2 3 4 | >>> ornek.topla(10,5.5) 15.5 |
Python’un tonlarca standart modülü vardır.
Python standart modüllerinin tam listesini ve ne için olduklarını kontrol edebilirsiniz. Bu dosyalar Python’u kurduğunuz konumun içindeki Lib dizinindedir.
Standart modüller, kullanıcı tanımlı modüllerimizi içe aktardığımız şekilde içe aktarılabilir.
Modülleri içe aktarmanın çeşitli yolları vardır. Bunlar aşağıdaki gibi sıralanmıştır.
Python içe aktarma bildirimi
import
ifadesini kullanarak bir modülü içe aktarabilir ve yukarıda açıklanan nokta operatörünü kullanarak içindeki tanımlara erişebiliriz. İşte bir örnek.
1 2 3 4 5 6 7 8 | # örnek import ifadesi # standart math modülünü dahil etme import math print("İşte PI:", math.pi) |
Program yorumlayıcı tarafından çalıştırıldığında aşağıdaki gibi bir çıktı oluşturacaktır.
1 2 3 | İşte PI: 3.141592653589793 |
Yeniden adlandırma ile içe aktarma
Bir modülü aşağıdaki gibi yeniden adlandırarak içe aktarabiliriz.
1 2 3 4 5 6 | # import modulü yeniden adlandırma import math as matematik print("Pi sayısı:", matematik.pi) |
Math modülünü matematik olarak değiştirdik. Bu, bazı durumlarda yazarak zaman kazanmamızı sağlayabilir.
Math adının bizim kapsamımızda tanınmadığını unutmayın. Bu nedenle, math.pi geçersiz olacak, matematik.pi olarak doğru uygulamadır.
Python from … import … ifadesi
Modülü bir bütün olarak içe aktarmadan bir modülden belirli isimleri aktarabiliriz. İşte bir örnek.
1 2 3 4 5 6 | # import sadece pi aktarılacaktır from math import pi print("PI SAYISI", pi) |
Modülden yalnızca pi niteliğini içe aktardık.
Bu durumda nokta operatörünü kullanmayız. Birden fazla özelliği aşağıdaki gibi içe aktarabiliriz.
1 2 3 | from math import pi, e |
Tüm adları içe aktarma
Tüm yapıları (tanımları) aşağıdaki yapıyı kullanarak bir modülden alabiliriz.
1 2 3 4 5 6 | # tüm math isimlerini içe aktarma from math import * print("pi sayısı", pi) |
Tüm tanımları math modülünden içe aktardık. Bu, altyazı ile başlayanlar dışındaki tüm adları kapsamımızda görünür hale getirir.
Yıldız işareti (*) simgesiyle her şeyi içe aktarmak iyi bir programlama uygulaması değildir. Bu, bir tanımlayıcı için yinelenen tanımlara yol açabilir. Ayrıca kodumuzun okunabilirliğini de engeller.
Python Modülü Arama Yolu
Bir modülü alırken, Python çeşitli yerlere bakar. Tercüman önce yerleşik bir modül arar (bulamazsa) sys.path dosyasında tanımlanan dizinler listesine bakar. Arama bu sırada.
- Geçerli dizin.
PYTHONPATH
(dizin listesi olan bir ortam değişkeni).- Yüklemeye bağlı varsayılan dizin.
1 2 3 4 5 6 7 8 9 10 11 | >>> import sys >>> sys.path ['', 'C:\\Python33\\Lib\\idlelib', 'C:\\Windows\\system32\\python33.zip', 'C:\\Python33\\DLLs', 'C:\\Python33\\lib', 'C:\\Python33', 'C:\\Python33\\lib\\site-packages'] |
Bir modülü yeniden yükleme
Python yorumlayıcısı bir oturumu yalnızca bir kez içe aktarır. Bu işleri daha verimli hale getirir. Bir modülü birden fazla çağırdığınızda modül bir defa çağrılıp belleğe yüklenecektir.
dir() yerleşik fonksiyonu
Bir modül içinde tanımlanan isimleri bulmak için dir() fonksiyonunu kullanabiliriz.
Örneğin, modül örneğinde başlangıçta bir topla) işlevi tanımladık.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | >>> dir(ornek) [ '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'matematik' ] |
Burada, sıralı bir ad listesi (topla ile birlikte) görebiliriz. Alt çizgiyle başlayan diğer tüm adlar, modülle ilişkilendirilmiş varsayılan Python öznitelikleridir (bunları kendimiz tanımlayamadık).
Örneğin, __name__
özniteliği modülün adını içerir.
1 2 3 4 5 | >>> import ornek >>> ornek.__name__ 'ornek' |
Mevcut ad alanımızda tanımlanan tüm isimler dir() işlevi kullanılarak herhangi bir argüman olmadan bulunabilir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | >>> a=1 >>> b="merhaba" >>> import math >>> dir() ['__annotations__', '__builtins__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'b', 'math', 'ornek', 'sys'] |
1 Yorum