Modülü içeri aktar Python Örneklerle
⚡ Akıllı Özet
İçe aktar Python Bir dosyanın, başka bir dosyada tanımlanan değişkenleri, fonksiyonları ve sınıfları yeniden kullanmasına olanak tanır. Bir modül basitçe bir .py dosyasıdır, bir paket ise __init__.py dosyasıyla işaretlenmiş bir dizin içindeki ilgili modülleri gruplandırır.

Aşağıdaki bölümlerde modüller, paketler, farklı içe aktarma stilleri ve mutlak ve göreceli içe aktarmaların nasıl çalıştığı açıklanmaktadır. Python.
Modüller nelerdir Python?
Bir modül, bir dosyadır Python Kod. Kod, değişkenler, fonksiyonlar veya tanımlanmış bir sınıf şeklinde olabilir. Dosya adı modül adı olur.
Örneğin dosya adınız guru99.py ise modül adı şöyle olacaktır: guru99. Modül işlevselliği sayesinde, her şeyi tek bir dosyaya yazmak yerine kodunuzu farklı dosyalara bölebilirsiniz.
Nedir Python içe aktarma modülü?
Bir dosya, bir modül olarak kabul edilir. PythonModülü kullanmak için onu şu şekilde içe aktarmanız gerekir: ithalat Anahtar kelime. Dosya içindeki fonksiyonlar veya değişkenler, modülü içe aktararak başka bir dosyada kullanılabilir. Bu işlevsellik, diğer dillerde de mevcuttur, örneğin: TypeScript, JavaSenaryo, Java, Yakut vb.
Bir modül nasıl oluşturulur ve içe aktarılır Python?
Şimdi bir modül oluşturacağız ve onu başka bir dosyaya aktaracağız.
Ekran görüntüsünde gösterildiği gibi modülü oluşturma ve içe aktarma akışı şöyledir:
Bir modül oluşturmak için verilen adımları izleyin. Python.
Kodu test etmek için kullanılan klasör yapısı aşağıdaki gibidir:
modtest/ test.py display.py
) 1 Adım Bir dosya oluşturun ve adını test.py olarak belirleyin.
) 2 Adım test.py içinde display_message() adında bir işlev oluşturun
Def display_message():
return "Welcome to Guru99 Tutorials!"
) 3 Adım Şimdi başka bir display.py dosyası oluşturun.
) 4 Adım Aşağıda gösterildiği gibi display.py dosyasının içine test.py modül dosyasını ekleyin:
import test
İçe aktarma işlemi sırasında test.py dosyasını belirtmenize gerek yok, sadece dosya adını belirtmeniz yeterli.
) 5 Adım Ardından, display.py dosyasının içinde test.py dosyasındaki display_message() fonksiyonunu çağırabilirsiniz. module_name.function_name yapısını kullanmanız gerekiyor.
Örneğin test.display_message().
Import test
print(test.display_message())
) 6 Adım display.py dosyasını çalıştırdığınızda aşağıdaki çıktıyı alacaksınız. Çıktı:
Welcome to Guru99 Tutorials!
Bir Sınıfı İçe Aktarma Python
Daha önce, bir fonksiyon içeren basit bir modül görmüştük. Burada bir sınıf oluşturacağız ve bu sınıfa başka bir dosya içinde referans vereceğiz.
Kodun test edilmesi için kullanılan klasör yapısı aşağıdaki gibidir:
myproj/ Car.py display.py
Aşağıdaki kodla Car.py adında bir dosya oluşturun:
Dosya adı: Car.py
class Car: brand_name = "BMW" model = "Z4" manu_year = "2020" def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print("Car brand is ", self.brand_name) print("Car model is ", self.model) print("Car manufacture year is ", self.manu_year) def get_Car_brand(self): print("Car brand is ", self.brand_name) def get_Car_model(self): print("Car model is ", self.model)
Car.py dosyasında brand_name, model ve manu_year öznitelikleri bulunmaktadır. Sınıf içinde tanımlanan fonksiyonlar ise car_details(), get_Car_brand() ve get_Car_model() fonksiyonlarıdır.
Şimdi Car.py dosyasını display.py adlı başka bir dosyanın içinde modül olarak kullanalım.
Dosya adı: display.py
import Car car_det = Car.Car("BMW","Z5", 2020) print(car_det.brand_name) print(car_det.car_details()) print(car_det.get_Car_brand()) print(car_det.get_Car_model())
Çıktı:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
Bu sayede Car modülünü kullanarak Car.py dosyasındaki tüm değişkenlere ve fonksiyonlara erişebiliriz.
From'dan içe aktarma modülünü kullanma
Modülün tamamını içe aktarmak yerine, modülün yalnızca küçük bir bölümünü, yani yalnızca gerekli fonksiyonları ve değişken adlarını içe aktarabilirsiniz.
Yalnızca belirli şeylerin içe aktarılmasını istediğinizde, istediğiniz şeyleri içe aktarmak için "from" anahtar kelimesini kullanabilirsiniz.
Yani sözdizimi
from module import your function_name , variables,... etc.
Kodu test etmek için kullanılan klasör yapısı aşağıdaki gibidir:
modtest/ test.py display.py
test.py dosyasında aşağıdaki gibi 2 fonksiyon bulunmaktadır:
Dosya adı: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Şimdi display_message() fonksiyonuna ihtiyacınız var. İçe aktardığınız fonksiyona veya değişkene aşağıdaki gibi doğrudan erişebilirsiniz:
Dosya Adı: display.py
from test import display_message print(display_message())
Çıktı:
Welcome to Guru99 Tutorials!
Eğer display_message1() fonksiyonunu kullanırsanız, aşağıdaki gibi fonksiyonun tanımlanmadığına dair bir hata alacaksınız:
from test import display_message print(display_message1())
Çıktı:
Traceback (most recent call last): File "display.py", line 3, in <module> print(display_message1()) Name Error: name 'display_message1' is not defined
Modüldeki her şeyi içe aktarma
`import` komutu, modül adını (örneğin dosya adı veya kullanılacak kütüphane adı) `import` komutuyla takip ederek modülün tamamını içe aktarmanıza olanak tanır.
Sözdizimi:
Import module
Veya kullanarak
from module import *
Kodu test etmek için kullanılan klasör yapısı aşağıdaki gibidir:
modtest/ test.py display.py
Aşağıda test.py içindeki kod ayrıntıları verilmiştir
my_name = "Guru99" my_address = "Mumbai" defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
İçe aktarma modülünü kullanma
Sadece modül adını kullanarak modül içindeki değişkenlere ve fonksiyonlara atıfta bulunmak için, bunların başına modül adını eklemeniz gerekir.
Örnek E-posta
Dosya adı: display.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
"test" modül adı, "test" modülünün içindeki fonksiyonlara ve değişkenlere atıfta bulunmak için kullanılır.
Çıktı:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
İçe aktarmayı kullanma *
kullanarak bir örnek görelim içe aktarmak *. kullanma içe aktarmak *aşağıdaki örnekte gösterildiği gibi işlevlere ve değişkenlere doğrudan erişilebilir:
from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address)
Çıktı:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
dir( ) işlevi
`dir()` fonksiyonu, yerleşik bir fonksiyondur. Python`dir()` fonksiyonu, verilen nesnenin yerleşik özellikleri de dahil olmak üzere tüm özelliklerini ve metotlarını döndürür.
Dolayısıyla, modül üzerinde `dir()` fonksiyonu kullanıldığında, modülün içinde bulunan değişkenleri ve fonksiyonları size gösterecektir.
İşte bir modül üzerinde `dir()` fonksiyonunun çalışan bir örneği. `Car.py` adında bir sınıfımız var, `Car` sınıfını içe aktaralım ve çıktıyı görmek için `dir()` fonksiyonuna atayalım.
Kodu test etmek için klasör yapısı aşağıdaki gibi olacaktır:
test prop/ Car.py test.py
Dosya adı: Car.py
class Car: brand_name = "BMW" model = "Z4" manu_year = "2020" def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print("Car brand is ", self.brand_name) print("Car model is ", self.model) print("Car manufacture year is ", self.manu_year) def get_Car_brand(self): print("Car brand is ", self.brand_name) def get_Car_model(self): print("Car model is ", self.model)
Dosya adı: test.py
import Car class_contents = dir(Car) print(class_contents)
Çıktı bize sınıfın adını ve Car.py'de tanımlanan tüm fonksiyonları verir.
Ayrıca mevcut yerleşik bir modülde dir() kullanmayı da deneyebilirsiniz. PythonAynı yöntemi şu konuda da deneyelim: json Aşağıdaki örnekte gösterildiği gibi modül. Bu, modülde bulunan tüm özellikleri ve yöntemleri görüntüleyecektir. json modülü.
Import json
json_details = dir(json)
print(json_details)
Çıktı:
['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa d', 'loads', 'scanner']
Paketler
Paket, içinde tanımlanmış tüm modüllerin bulunduğu bir dizindir. yapmak için Python Yorumlayıcı bunu bir paket olarak ele alır, dizininizde __init__.py dosyası bulunmalıdır. __init__.py dosyası dizini bir paket haline getirir. İşte üzerinde çalışacağımız paketin yapısı.
Paketin adı benim paketimPaketle çalışmaya başlamak için, mypackage/ adında bir dizin oluşturun. Bu dizinin içine __init__.py adında boş bir dosya oluşturun. Ardından module1.py, module2.py ve module3.py olmak üzere 3 dosya daha oluşturun ve ekran görüntüsünde gösterildiği gibi fonksiyonları tanımlayın. İşte module1.py, module2.py ve module3.py dosyalarının detayları:
modül1.py
def mod1_func1(): print("Welcome to Module1 function1") def mod1_func2(): print("Welcome to Module1 function2") def mod1_func3(): print("Welcome to Module1 function3")
modül2.py
def mod2_func1(): print("Welcome to Module2 function1") def mod2_func2(): print("Welcome to Module2 function2") def mod2_func3(): print("Welcome to Module2 function3")
modül3.py
def mod3_func1(): print("Welcome to Module3 function1") def mod3_func2(): print("Welcome to Module3 function2") def mod3_func3(): print("Welcome to Module3 function3")
MKS paket Kullanıma hazır. Şimdi, test.py dosyasında aşağıda gösterildiği gibi, paketi herhangi bir dosyanızın içinde çağırın:
Burada mypackage.module1 içe aktarılır ve şu şekilde bir takma ad verilir: mod1Benzer şekilde, mypackage'den module2.py ve module3.py adlı diğer modülleri de kullanabilirsiniz.
import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2())
Çıktı:
Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None
Az önce, içinde fonksiyonlar bulunan basit bir modül ile paketi tanıttık. Projenize göre, alt paketlere, yani tanımlanmış sınıflara sahip modüller içeren alt klasörlere sahip paketler de oluşturabilirsiniz.
Python Modül Arama Yolu
Yürütme sırasında ne zaman Python rastlamak modül adını içe aktarYorumlayıcı modülü bulmaya çalışır. Modülü önce yerleşik modül listesinde, ardından sys.path içinde tanımlanan tüm dizinlerde arar.
Özetle, yorumlayıcı modülü bulmak için şu aramayı yapar:
- Geçerli dizininizde.
- Dahili modül listesinde.
- sys.path dizinlerinin içinde.
`sys` modülünü içe aktararak ve `sys.path` komutunu çalıştırarak `sys.path`'in ayrıntılarını alabilirsiniz. Bu size aşağıda gösterildiği gibi dizinlerin listesini verecektir:
importsys
print(sys.path)
Çıktı:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\ \Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P ython37\\DLLs']
Ayrıca yolu değiştirebilir ve dizinleri gereksinimlerinize göre tutabilirsiniz.
İçe aktarmada modül takma adını kullanma
Modül adını bir takma ad vererek daha kısa bir forma da dönüştürebilirsiniz. Takma ad, aşağıdaki komut kullanılarak oluşturulabilir: as Anahtar kelime.
Sözdizimi:
import filename as alias name
Kodu test etmek için klasör yapısı aşağıdaki gibi olacaktır:
Mod test/ test.py display.py
Aşağıda test.py içindeki kod bulunmaktadır
my_name = "Guru99" my_address = "Mumbai" def display_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Şimdi display.py dosyasında test.py için bir takma ad kullanacağız.
Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address)
Test modülü için kullanılan takma ad t'dir. Dolayısıyla test.py dosyasındaki fonksiyonlara ve değişkenlere t takma adı kullanılarak başvurulabilir.
Çıktı:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Mutlak ve Göreli İthalat Python
Artık bir dosyayı başka bir dosyanın içine modül olarak nasıl aktaracağınızı biliyorsunuz. Şimdi klasörlerde bulunan dosyaların nasıl yönetileceğini görelim. Klasörlerdeki dosyalar mutlak veya göreceli içe aktarma kullanılarak içe aktarılabilir.
Aşağıda gösterildiği gibi proje klasörü yapınıza sahip olduğunuzu düşünün:
Kök klasör myproject/ şeklindedir. İçinde package1 ve package2 olmak üzere iki alt klasör bulunmaktadır.
package1 klasörü, module1.py ve module2.py olmak üzere iki modül içermektedir.
package2 klasöründe bir myclass.py sınıfı, module3.py içeren bir alt paket alt paketi ve son olarak module4.py bulunur.
- module1.py dosyasında myfunc1 adında bir fonksiyon bulunmaktadır.
- module2.py dosyasında myfunc2 adında bir fonksiyon bulunmaktadır.
- module3.py dosyasında myfunc3 adında bir fonksiyon bulunmaktadır.
- module4.py dosyasında myfunc4 adında bir fonksiyon bulunmaktadır.
Mutlak İçe Aktarmaları Kullanma
Mutlak içe aktarmalar için, modülünüzün tüm yolunu proje kök klasöründen itibaren eklemeniz gerekir.
Şimdi, her bir modülde bulunan fonksiyonlara atıfta bulunmak için mutlak içe aktarmaların nasıl kullanılacağını görelim.
myfunc1 fonksiyonuyla çalışmak için, onu aşağıdaki gibi içe aktarmanız gerekecektir:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
myfunc3 fonksiyonuyla çalışmak için, onu aşağıdaki gibi içe aktarmanız gerekecektir:
from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3()
Mutlak ithalat kullanmanın avantajları ve dezavantajları
Mutlak ithalat kullanmanın avantajları şunlardır:
- Kolaylaşır tracKod kontrolü için modülleri geri gönderin.
- Kullanımı kolay ve çok basittir.
- Proje farklı bir yola taşınsa bile, içe aktarmalar aynı kalacaktır.
Mutlak ithalat kullanmanın dezavantajları
Mutlak içe aktarma kullanmanın dezavantajları şunlardır:
- Modüller iç içe geçmişse ve modül adları uzunsa, içe aktarma yolu çok uzun olabilir.
Göreli İçe Aktarmaları Kullanma
Yukarıda bahsedilen klasör yapısını göz önünde bulundurarak, aynı dosyaları göreceli içe aktarma yöntemini kullanarak nasıl içe aktaracağımızı göreceğiz.
Göreceli içe aktarmada, içe aktarılacak modül mevcut konuma, yani içe aktarma ifadesinin bulunduğu konuma göre belirlenir.
Sözdizimi
Göreceli içe aktarmalarda, kullanarak içe aktarırken modül adından önce bir nokta (.) eklemeniz gerekir. itibaren.
Eğer modül mevcut konumdan bir üst seviyedeyse, modül adının başına iki nokta (..) konulacaktır.
Yukarıda bahsedilen klasör yapısı şekline bakarak, başvurmamız gereken aşağıdaki modülleri ve işlevlerini görüyoruz.
- module1.py dosyasında myfunc1 adında bir fonksiyon bulunmaktadır.
- module2.py dosyasında myfunc2 adında bir fonksiyon bulunmaktadır.
- module3.py dosyasında myfunc3 adında bir fonksiyon bulunmaktadır.
- module4.py dosyasında myfunc4 adında bir fonksiyon bulunmaktadır.
myfunc1 fonksiyonuyla çalışmak için, onu aşağıdaki gibi içe aktarmanız gerekecektir:
from .module1 import myfunc1
myfunc3 fonksiyonuyla çalışmak için, onu aşağıdaki gibi içe aktarmanız gerekecektir:
from .subpkg.module3 import myfunc3
Göreli İthalatın Avantajları
- Göreli ithalatlarla çalışmak kolaydır.
- Mevcut konumdan bakıldığında ithalat, mutlak ithalata kıyasla kısaltılabilir.
Göreli İthalatın Dezavantajları
- Göreli içe aktarmalar kullanıldığında, bu durum zordur. tracKodun bulunduğu yere geri dönün.



