Python Modülleri
Bu makalede, Python’da özel modüller oluşturmayı ve içe aktarmayı öğreneceksiniz. Ayrıca, Python’da özel ve yerleşik modülleri içe aktarmak 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 atıfta bulunur.
Python kodunu içeren bir dosyaya, örneğin: example.py
modül denir ve modül adı example
.
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ül içerisinde tanımlayıp import edebiliyoruz.
Bir modül oluşturalım. Aşağıdakini yazın ve olarak kaydedin example.py
.
1 2 3 4 5 6 7 8 | # Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result |
Burada, adında bir modül içinde bir fonksiyon tanımladık . İşlev iki sayı alır ve toplamlarını döndürür.add()example
Python’da modüller nasıl içe aktarılır?
Bir modülün içindeki tanımları başka bir modüle veya Python’daki etkileşimli yorumlayıcıya aktarabiliriz.
Bunu import
yapmak için anahtar kelimeyi kullanıyoruz. Daha önce tanımladığımız modülümüzü içe aktarmak example
için Python komut istemine aşağıdakini yazıyoruz.
1 | >>> import example |
example
Bu, doğrudan geçerli simge tablosunda tanımlanan işlevlerin adlarını içe aktarmaz. Yalnızca example
oradaki modül adını içe aktarır.
Modül adını kullanarak nokta .
operatörünü kullanarak fonksiyona erişebiliriz. Örneğin:
1 2 | >>> example.add(4,5.5) 9.5 |
Python’un tonlarca standart modülü vardır. Python standart modüllerinin tam listesine ve kullanım durumlarına göz atabilirsiniz . 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 gibi içe aktarılabilir.
Modülleri içe aktarmanın çeşitli yolları vardır. Aşağıda listelenmiştir..
Python içe aktarma ifadesi
Bir modülü deyimi kullanarak içe aktarabilir import
ve yukarıda açıklandığı gibi nokta operatörünü kullanarak içindeki tanımlara erişebiliriz. İşte bir örnek.
1 2 3 4 5 | # import statement example # to import standard module math import math print("The value of pi is", math.pi) |
Programı çalıştırdığınızda çıktısı şöyle olacaktır:
1 | <samp>Pi'nin değeri 3.141592653589793</samp> |
Yeniden adlandırarak içe aktar
Bir modülü aşağıdaki gibi yeniden adlandırarak içe aktarabiliriz:
1 2 3 4 | # import module by renaming it import math as m print("The value of pi is", m.pi) |
math
Modülün adını m
. Bu, bazı durumlarda yazma süresinden tasarruf etmemizi sağlayabilir.
Adın math
kapsamımızda tanınmadığını unutmayın. Dolayısıyla math.pi
geçersizdir ve m.pi
doğru uygulamadır.
Python…import ifadesinden
Modülü bir bütün olarak içe aktarmadan belirli adları bir modülden içe aktarabiliriz. İşte bir örnek.
1 2 3 4 | # import only pi from math module from math import pi print("The value of pi is", pi) |
Burada, modülden sadece pi
özniteliği içe aktardık.math
Bu gibi durumlarda nokta operatörünü kullanmayız. Ayrıca birden çok özelliği aşağıdaki gibi içe aktarabiliriz:
1 2 3 4 5 | >>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045 |
Tüm adları içe aktar
Aşağıdaki yapıyı kullanarak tüm adları (tanımları) bir modülden içe aktarabiliriz:
1 2 3 4 | # import all names from the standard module math from math import * print("The value of pi is", pi) |
Burada matematik modülündeki tüm tanımları içe aktardık. Bu, alt çizgi (özel tanımlar) ile başlayanlar dışında, kapsamımızda görünen tüm adları içerir.
Yıldız (*) sembolü ile 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ü içe aktarırken Python birkaç yere bakar. Tercüman önce yerleşik bir modül arar. Ardından (yerleşik modül bulunamazsa), Python sys.path
. Arama bu sırayla.
- Geçerli dizin.
PYTHONPATH
(dizin listesi içeren bir ortam değişkeni).- Kuruluma bağlı varsayılan dizin.
1 2 3 4 5 6 7 8 9 | >>> içe aktarma sistemi >>> sistem yolu ['', 'C:\\Python33\\Lib\\idlelib', 'C:\\Windows\\system32\\python33.zip', 'C:\\Python33\\DLL'ler', 'C:\\Python33\\lib', 'C:\\Python33', 'C:\\Python33\\lib\\site paketleri'] |
Kendi yolumuzu eklemek için bu listeyi ekleyebilir ve değiştirebiliriz.
Bir modülü yeniden yükleme
Python yorumlayıcısı, bir oturum sırasında bir modülü yalnızca bir kez içe aktarır. Bu, işleri daha verimli hale getirir. İşte bunun nasıl çalıştığını gösteren bir örnek.
Adlı bir modülde aşağıdaki kodun olduğunu varsayalım my_module
.
1 2 3 4 | # This module shows the effect of # multiple imports and reload print("This code got executed") |
Şimdi çoklu ithalatın etkisini görüyoruz.
1 2 3 4 | >>> import my_module This code got executed >>> import my_module >>> import my_module |
Kodumuzun yalnızca bir kez çalıştırıldığını görebiliriz. Bu, modülümüzün yalnızca bir kez içe aktarıldığını söylüyor.
Şimdi modülümüz program sırasında değiştiyse, onu yeniden yüklememiz gerekecekti. Bunu yapmanın bir yolu, yorumlayıcıyı yeniden başlatmaktır. Ancak bu pek yardımcı olmuyor.
Python bunu yapmanın daha verimli bir yolunu sunar. Bir modülü yeniden yüklemek için modülün reload()
içindeki işlevi kullanabiliriz . imp
Bunu aşağıdaki şekillerde yapabiliriz:
1 2 3 4 5 6 7 | >>> import imp >>> import my_module This code got executed >>> import my_module >>> imp.reload(my_module) This code got executed <module 'my_module' from '.\\my_module.py'> |
dir() yerleşik işlevi
dir()
Bir modülün içinde tanımlanmış isimleri bulmak için fonksiyonu kullanabiliriz .
Örneğin, başlangıçta sahip olduğumuz add()
modülde bir fonksiyon tanımladık example
.
dir
Modülde şu şekilde kullanabiliriz example
:
1 2 3 4 5 6 7 8 9 10 | >>> dir(example) ['__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add'] |
Burada, sıralanmış bir ad listesi görebiliriz ( ile birlikte add
). Alt çizgi ile başlayan diğer tüm adlar, modülle ilişkili varsayılan Python öznitelikleridir (kullanıcı tanımlı değil).
Örneğin, __name__
öznitelik modülün adını içerir.
1 2 3 | >>> import example >>> example.__name__ 'example' |
Geçerli ad alanımızda tanımlanan tüm adlar, dir()
işlev kullanılarak herhangi bir argüman olmadan bulunabilir.
1 2 3 4 5 | >>> a = 1 >>> b = "hello" >>> import math >>> dir() ['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter'] |