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:

Bir Modül Oluşturun ve İçe Aktarın Python

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.

Paketler Python

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:

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

Mutlak ve Göreli İthalat Python

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.