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.
Video: Python Modülleri
Python'daki modüller nelerdir?
Modüller, Python ifadeleri ve tanımları içeren bir dosyaya atıfta bulunur.
Python kodunu içeren bir dosya, örneğin:, example.py
modül olarak adlandırılır 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.
En çok kullandığımız fonksiyonları tanımlarını farklı programlara kopyalamak yerine bir modülde tanımlayabilir ve içe aktarabiliriz.
Bir modül oluşturalım. Aşağıdakini yazın ve olarak kaydedin example.py
.
# Python Module example def add(a, b): """This program adds two numbers and return the result""" result = a + b return result
Burada add()
isimli bir modül içerisinde bir fonksiyon tanımladık example
. Fonksiyon iki sayıyı alır ve toplamlarını döndürür.
Python'da modüller nasıl içe aktarılır?
Bir modül 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 . Önceden tanımladığımız modülü içe aktarmak example
için Python komut istemine aşağıdakileri yazıyoruz.
>>> import example
Bu, example
doğrudan geçerli sembol tablosunda tanımlanan fonksiyonların isimlerini içe aktarmaz. Yalnızca modül adını example
oraya aktarır .
Modül adını kullanarak, nokta .
operatörünü kullanarak işleve erişebiliriz . Örneğin:
>>> example.add(4,5.5) 9.5
Python'da 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 bildirimi
İfadeyi kullanarak bir modülü içe aktarabilir import
ve yukarıda açıklandığı gibi nokta operatörünü kullanarak içindeki tanımlara erişebiliriz. İşte bir örnek.
# 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ı:
Pi'nin değeri 3,141592653589793'tür.
Yeniden adlandırarak içe aktar
Bir modülü aşağıdaki gibi yeniden adlandırarak içe aktarabiliriz:
# import module by renaming it import math as m print("The value of pi is", m.pi)
math
Modülü olarak yeniden adlandırdık m
. Bu, bazı durumlarda yazmaya zaman kazandırabilir.
Adın math
kapsamımızda tanınmadığını unutmayın . Bu nedenle math.pi
geçersizdir ve m.pi
doğru uygulama.
Python from… import ifadesi
Modülü bir bütün olarak içe aktarmadan bir modülden belirli isimleri içe aktarabiliriz. İşte bir örnek.
# 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 aşağıdaki gibi birden çok özelliği içe aktarabiliriz:
>>> from math import pi, e >>> pi 3.141592653589793 >>> e 2.718281828459045
Tüm isimleri içe aktar
Aşağıdaki yapıyı kullanarak bir modüldeki tüm isimleri (tanımları) içe aktarabiliriz:
# import all names from the standard module math from math import * print("The value of pi is", pi)
Burada, matematik modülünden tüm tanımları içe aktardık. Bu, alt çizgiyle başlayanlar (özel tanımlar) dışında kapsamımızda görünen tüm adları içerir.
Yıldız (*) sembolü olan 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 ilk olarak yerleşik bir modül arar. Ardından (yerleşik modül bulunamazsa), Python içinde tanımlanan dizinlerin listesine bakar sys.path
. Arama bu sıradadır.
- Geçerli dizin.
PYTHONPATH
(dizin listesi içeren bir ortam değişkeni).- Kuruluma bağlı varsayılan dizin.
>>> sys içe aktar >>> sys.path ('', 'C: \ Python33 \ Lib \ idlelib', 'C: \ Windows \ system32 \ python33.zip', 'C: \ Python33 \ DLL'ler ',' C: \ Python33 \ lib ',' C: \ Python33 ',' C: \ Python33 \ lib \ site paketleri ')
We can add and modify this list to add our own path.
Reloading a module
The Python interpreter imports a module only once during a session. This makes things more efficient. Here is an example to show how this works.
Suppose we have the following code in a module named my_module
.
# This module shows the effect of # multiple imports and reload print("This code got executed")
Now we see the effect of multiple imports.
>>> import my_module This code got executed >>> import my_module >>> import my_module
We can see that our code got executed only once. This goes to say that our module was imported only once.
Now if our module changed during the course of the program, we would have to reload it.One way to do this is to restart the interpreter. But this does not help much.
Python provides a more efficient way of doing this. We can use the reload()
function inside the imp
module to reload a module. We can do it in the following ways:
>>> import imp >>> import my_module This code got executed >>> import my_module >>> imp.reload(my_module) This code got executed
The dir() built-in function
dir()
Bir modülün içinde tanımlanmış isimleri bulmak için işlevi kullanabiliriz .
Örneğin , başlangıçta sahip olduğumuz add()
modülde bir fonksiyon tanımladık example
.
Biz kullanabilirsiniz dir
içinde example
şu şekilde modül:
>>> dir(example) ('__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', 'add')
Burada, sıralı bir isim listesi görebiliriz (bununla birlikte add
). Alt çizgiyle başlayan diğer tüm adlar, modülle ilişkili varsayılan Python nitelikleridir (kullanıcı tanımlı değildir).
Örneğin, __name__
öznitelik modülün adını içerir.
>>> import example >>> example.__name__ 'example'
Mevcut isim alanımızda tanımlanan tüm isimler dir()
, herhangi bir argüman olmadan fonksiyon kullanılarak bulunabilir .
>>> a = 1 >>> b = "hello" >>> import math >>> dir() ('__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter')