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.

  • 🔘 Modül nedir? Bir modül, değişkenleri, fonksiyonları veya sınıfları barındıran tek bir .py dosyasıdır.
  • ☑️ İçe aktarma anahtar kelimesi: `import` işlemi modülün tamamını yükler; `module_name.function_name` ise modülün üyelerini çağırır.
  • Seçici içe aktarma: `from module import name` komutu yalnızca ihtiyacınız olan fonksiyonları veya değişkenleri içerir.
  • 🧪 Takma adlar: `import module as alias` uzun isimleri kısaltır; `from module import *` ise her şeyi gösterir.
  • Paketler ve yollar: __init__.py bir klasörü pakete dönüştürür; sys.path arama konumlarını listeler.
  • 🤖 Yapay zeka iş akışları: Makine öğrenimi projeleri NumPy, pandas ve Py kütüphanelerini içe aktarır.Torch modüller olarak.

Modülü içeri aktar Python

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şturun ve İçe Aktarın Python

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ı.

Paketler Python

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:

  1. Geçerli dizininizde.
  2. Dahili modül listesinde.
  3. 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:

Mutlak ve Göreli İthalat Python

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.

SSS

Python Modül bulunamadı. Dosyanın doğru yazıldığından, sys.path'te veya geçerli klasörde bulunduğundan ve paketin aktif sanal ortamınıza yüklendiğinden emin olun. Üçüncü taraf modüller için pip install komutunu ve ardından paket adını çalıştırın.

Önce şunu yükleyin: bip, Python Örneğin, `pip install pandas` komutuyla paket yöneticisini kullanarak kurabilirsiniz. Ortamınıza kurulduktan sonra, `import pandas` komutuyla normal şekilde içe aktarabilirsiniz. `json` gibi yerleşik modüllerin kurulumu gerekmez.

Dairesel içe aktarma, iki modülün birbirini içe aktarması ve birinin yalnızca kısmen yüklenmesiyle gerçekleşir. Bunu düzeltmek için paylaşılan kodu birleştirin, ihtiyaç duyan fonksiyonun içinde içe aktarın veya belirli adlar yerine tüm modülü içe aktarın.

Bu koruma mekanizması, kodu yalnızca dosya doğrudan çalıştırıldığında çalıştırır, içe aktarıldığında değil. Bu mekanizma olmasaydı, her içe aktarma işlemi modülün en üst düzey ifadelerini yeniden çalıştırırdı. Yeniden kullanılabilir işlevleri, komut dosyası tarzındaki test kodundan ayrı tutar.

Hayır. Python Bir modülü bir kez çalıştırır, ardından sys.modules'da önbelleğe alır ve daha sonraki içe aktarmalar için bu nesneyi yeniden kullanır. Geliştirme sırasında yeniden yüklemeyi zorlamak için importlib.reload(module) çağrısını yapın.

Modül adı yalnızca çalışma sırasında biliniyorsa, örneğin eklentiler yüklenirken, `importlib.import_module(“name”)` kullanın. Bu, modül nesnesini döndürür, böylece işlevlerine normal bir içe aktarma gibi erişebilirsiniz.

Makine öğrenimi kodu NumPy, pandas, scikit-learn, TensorFlow ve Py kütüphanelerini içe aktarır.TorEkipler ayrıca kendi işlem hatlarını yeniden kullanılabilir modüllere ve paketlere ayırır, ardından paylaşılan ön işleme ve eğitim işlevlerini komut dosyaları arasında içe aktarır.

Evet. GitHub Copilot ve yardımcı araçlar, siz yazarken içe aktarma satırları önerir, eksik içe aktarmaları ekler ve içe aktarma hatalarını çözmenize yardımcı olur. Bir öneriye güvenmeden önce modülün yüklü olduğundan ve adının ortamınızla eşleştiğinden emin olun.

Bu yazıyı şu şekilde özetleyin: