Modülü içeri aktar Python Örneklerle
Modüller nelerdir Python?
Modül, python kodlu bir dosyadır. Kod değişkenler, işlevler veya tanımlanmış sınıf biçiminde 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ü?
Python'da bir dosya bir modül olarak kabul edilir. Modülü kullanmak için, onu kullanarak içe aktarmanız gerekir. ithalat anahtar kelime. Dosyanın içinde bulunan fonksiyon veya değişkenler, modül içe aktarılarak başka bir dosyada kullanılabilir. Bu işlevsellik, daktilo gibi diğer dillerde de mevcuttur. JavaScript, java, ruby vb.
Bir modül nasıl oluşturulur ve içe aktarılır Python?
Şimdi bir modül oluşturup 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:
Python'da modül oluşturmak için verilen adımları izleyin.
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 adlandırın
) 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 display.py içinde moduletest.py dosyasını aşağıda gösterildiği gibi içe aktarın:
import test
İçe aktarma sırasında test.py'den bahsetmenize gerek yoktur, yalnızca dosyanın adını belirtmeniz gerekir.
) 5 Adım Daha sonra display.py içindeki test.py'den display_message() fonksiyonunu çağırabilirsiniz, module_name.function_name'i kullanmanız gerekir.
Örneğin test.display_message().
Import test print(test.display_message())
) 6 Adım display.py'yi çalıştırdığınızda, aşağıdakileri elde edeceksiniz Çıktı:
Welcome to Guru99 Tutorials!
Bir Sınıfı İçe Aktarma Python
Daha önce fonksiyonu olan basit bir modül görmüştük. Burada bir sınıf oluşturulacak ve sınıfa başka bir dosyanın içinde başvurulacaktır.
Kodu test etmek için 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 nitelikleri vardır. Sınıfın içinde tanımlanan işlevler car_details(), get_Car_brand(), get_Car_model()'dir.
Ş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
Yani Car modülünü kullanarak Car.py'deki tüm değişkenlere ve işlevlere erişebiliriz.
From'dan içe aktarma modülünü kullanma
Kodun tamamını içe aktarmak yerine modülün yalnızca küçük bir kısmını, yani modülden yalnızca gerekli işlevleri ve değişken adlarını içe aktarabilirsiniz.
Yalnızca belirli şeylerin içe aktarılmasını istediğinizde, istediğinizi 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'de gösterildiği gibi 2 fonksiyon vardır:
Dosya adı: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Şimdi display_message() işlevini istiyorsunuz. İçe aktardığınız işleve veya değişkene aşağıda gösterildiği gibi doğrudan erişilebilir:
Dosya Adı: display.py
from test import display_message print(display_message())
Çıktı:
Welcome to Guru99 Tutorials!
Şimdi display_message1() fonksiyonunu kullanırsanız, fonksiyonun aşağıda gösterildiği gibi tanımlanmadığına dair bir hata verecektir:
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
İçe aktarma, içe aktarmayı ve ardından modül adını, yani kullanılacak dosya adını veya kitaplığı kullanarak tüm modülü 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
Yalnızca modül adını içe aktarırken, modül içindeki değişkenlere ve işlevlere atıfta bulunmak için modül adının önüne eklenmelidir.
Ö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)
Modül adı testi, modül testi içindeki işlev 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() Python'da yerleşik bir işlevdir. dir() işlevi, verilen nesnenin yerleşik özellikleri de dahil olmak üzere tüm özellikleri ve yöntemleri döndürür.
Yani modülde dir() kullanıldığında, size modülün içinde mevcut olan değişkenleri, fonksiyonları verecektir.
Burada bir modül üzerinde dir() işlevinin çalışan bir örneği verilmiştir. Car.py adında bir sınıfımız var, çıktıyı görmek için Car'ı içe aktaralım ve dir()'e 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. Python. Aynısını deneyelim json Aşağıdaki örnekte gösterildiği gibi modül. Mevcut tüm özellikleri ve yöntemleri gösterecektir. 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ırsa, dizininizin init.py dosyasına sahip olması gerekir. init.py dizini bir paket haline getirir. İşte üzerinde çalışacağımız paketin düzeni.
Paketin adı benim paketim. Paketle çalışmaya başlamak için package/ adında bir dizin oluşturun. Dizinin içinde __init__.py adında boş bir dosya oluşturun. 3 tane daha module1.py, module2.py ve module3.py dosyası oluşturun ve ekran görüntüsünde gösterildiği gibi işlevleri tanımlayın. İşte module1.py, module2.py ve module3.py'nin ayrıntıları
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")
The paketkullanıma hazırdır. Şimdi, aşağıda gösterildiği gibi herhangi bir dosyanızın içindeki paketi çağırın:test.py:
Burada mypackage.module1 içe aktarılır ve şu şekilde bir takma ad verilir: mod1. Benzer şekilde paketimdeki diğer module2.py ve module3.py modüllerini 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 işlevler bulunan basit bir modül içeren paketi gösterdik. Projenize göre alt paketlerle de paketleyebilirsiniz. Alt klasörler/tanımlanmış sınıflara sahip modüller.
Python Modül Arama Yolu
Yürütme sırasında python karşılaştığında modül adını içe aktaryorumlayıcı modülü bulmaya çalışır. Modülü yerleşik modül listesinde arar. Later toplamda sys.path içinde tanımlanan dizinler.
Özetle, yorumlayıcı modülü bulmak için şu aramayı yapar:
- Geçerli dizininizde.
- Yerleşik modül listesinde
- Sys.path dizinlerinin içinde
sys.path'in ayrıntılarını sys modülünü içe aktararak alabilir ve sys.path'i yazdırabilirsiniz. Aşağıda gösterildiği gibi size 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
Ayrıca modül adını, takma ad vererek daha kısa bir forma dönüştürebilirsiniz. Takma ad, anahtar kelime kullanılarak yapılabilir.
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!"
Artık display.py dosyasında test.py için bir takma ad kullanacak
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. Yani test.py'deki fonksiyon 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 benim projemdir/. Paket1 ve paket2 olmak üzere iki alt klasörü vardır.
Paket1 klasöründe modül1.py ve modül2.py olmak üzere iki modül bulunur.
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'da myfunc1 adında bir fonksiyon var.
- Module2.py'de myfunc2 adında bir işlev var.
- Module3.py'de myfunc3 adında bir işlev var.
- Module4.py'de myfunc4 adında bir işlev var.
Mutlak İçe Aktarmaları Kullanma
Mutlak içe aktarmalar için modülünüzün yolunun tamamını doğrudan proje kök klasöründen eklemeniz gerekir.
Şimdi her bir modülde mevcut işlevlere atıfta bulunmak için mutlak içe aktarmadan nasıl yararlanacağımızı görelim.
functionmyfunc1 ile çalışmak için aşağıdaki gibi içe aktarmanız gerekir:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
myfunc3 işleviyle çalışmak için aşağıdaki gibi içe aktarmanız gerekir:
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:
- Kod kontrolü için modüllerin izini sürmek kolaylaşır.
- 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 ithalat kullanmanın dezavantajları şunlardır:
Dezavantajları:
- Modüllerin iç içe olması ve modül adlarının uzun olması durumunda içe aktarma yolu çok uzun olabilir.
Göreli İçe Aktarmaları Kullanma
Aşağıda belirtilen aynı klasör yapısını göz önünde bulundurarak, göreceli içe aktarmaları kullanarak aynı klasörün nasıl içe aktarılacağını göreceğiz.
Göreceli içe aktarmada, içe aktarılacak modül, içe aktarma ifadesinin bulunduğu konum olan geçerli konuma göredir.
Sözdizimi
Göreceli içe aktarmalarda, kullanarak içe aktarırken modül adından önce bir nokta (.) eklemeniz gerekir. itibaren.
Modül mevcut konumundan bir seviye yukarıdaysa, modül adından önce 2 nokta (..) olacaktır.
Yukarıda belirtilen klasör yapısı şekline bakıldığında, başvurmamız gereken fonksiyonlarıyla birlikte aşağıdaki modüller bulunmaktadır.
- Module1.py'da myfunc1 adında bir fonksiyon var.
- Module2.py'de myfunc2 adında bir işlev var.
- Module3.py'de myfunc3 adında bir işlev var.
- Module4.py'de myfunc4 adında bir işlev var.
functionmyfunc1 ile çalışmak için aşağıdaki gibi içe aktarmanız gerekir:
from .module1 import myfunc1
myfunc3 işleviyle çalışmak için aşağıdaki gibi içe aktarmanız gerekir:
from .subpkg.module3 import myfunc3
Göreli İthalatın Avantajları
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ı
Dezavantajları:
- Göreceli içe aktarmaları kullanarak kodun bulunduğu yeri takip etmek zordur
ÖZET
- İçe aktar Python koda, yani başka bir dosyada yazılmış .functions/objects'e başvurmanıza yardımcı olur. Ayrıca pip(python paket yöneticisi) kullanılarak yüklenen ve kodunuzda kullanmanız gereken python kütüphanelerini/paketlerini içe aktarmak için de kullanılır.
- İçe aktarma işlevi, TypeScript gibi diğer dillerde de mevcuttur. JavaScript, java, ruby vb.
- Bir modül python'dur, örneğin dosyanın içine yazılan koddur (test.py). Dosyanızın içinde değişkenlerinizi, işlevlerinizi veya sınıfınızı tanımlayabilirsiniz. Dosyanın tamamı bir modül haline gelir ve koda atıfta bulunmak üzere başka bir dosyanın içine aktarılabilir.
- Modül işlevselliği sayesinde, her şeyi tek bir dosyaya yazmak yerine kodunuzu farklı dosyalara bölebilirsiniz. Later, içe aktarmayı kullanarak ihtiyacınız olan dosyanın içindeki koda başvurabilirsiniz.
- Python yerleşik modülleri ve ayrıca harici kitaplıkları/paketleri bir piton paket yöneticisi (pip), örneğin pandalar, NumPy vb. modüller olarak anılır.
- Kodun tamamını içe aktarmak yerine modülün yalnızca küçük bir bölümünü, yani modülden yalnızca gerekli işlevleri ve değişken adlarını içe aktarabilirsiniz.
- Ayrıca modül adını, takma ad vererek daha kısa bir forma dönüştürebilirsiniz. Takma ad, anahtar kelime kullanılarak yapılabilir.
- Paket, içinde tanımlanmış tüm modüllerin bulunduğu bir dizindir. yapmak için Python yorumlayıcınız bunu bir paket olarak ele alırsa, dizininizin __init.py dosyasına sahip olması gerekir. init.py dizini bir paket haline getirir. İşte üzerinde çalışacağımız paketin düzeni.
- Yürütme sırasında python karşılaştığında modül adını içe aktaryorumlayıcı modülü bulmaya çalışır. Modülü yerleşik modül listesinde arar. Later toplamda sys.path içinde tanımlanan dizinler.
- Mutlak içe aktarmalar için modülünüzün yolunun tamamını doğrudan proje kök klasöründen eklemeniz gerekir.
- Göreceli içe aktarmada, içe aktarılacak modül, içe aktarma ifadesinin bulunduğu konum olan geçerli konuma göredir.