__init__ Python

Python işlevleri ve meth

__init__.py dosyası, bir klasördeki dosyaların bir Python paketinin parçası olduğunu gösterir. Bir __init__.py dosyası olmadan, bir Python projesinde başka bir dizinden dosya içe aktaramazsınız.

Örnek Python projelerine göz atarken, bu dosyayı görmüş olabilirsiniz, __init__ .py. Ne olduğunu, boşsa neden orada olduğunu ve nasıl çalıştığını merak etmiş olabilirsiniz. Bu gönderi tüm bu soruları yanıtlayacak!

İşte __init__.py içeren örnek bir dosya yapısı:

main_package/ __init__.py file1.py file2.py file3.py main.py 

Ana klasör, kullandığımız Python dizinimizdir. bir Python paketiymiş gibi davranmak istiyorum. Bu şekilde ele alınabilmesi için, bu bilgiyi Python yorumlayıcısına ileten bir __init__.py dosyası eklemeliyiz.

Dosyaların geri kalanı sadece her birinin sahip olduğu Python dosyalarıdır. içinde başka bir yerde kullanmak isteyebileceğimiz farklı bilgiler. Bu bir Sınıf, bir işlev vb. olabilir.

main.py, main_package içinde depoladığımız işlevleri çağıracağımız yerdir. Bunun nasıl çalıştığını birazdan göreceksiniz, ama önce __init__.py dosyasına bir göz atalım.




__init__.py nedir?

__init__.py dosyası, Python yorumlayıcısının bir dizinin bir Python modülü için kod içerdiğini bilmesini sağlar. Bir __init__.py dosyası boş olabilir. Biri olmadan, başka bir klasördeki modülleri projenize aktaramazsınız.

__init__.py dosyasının rolü Python sınıfındaki __init__ işlevine benzer. Dosya, esasen, böyle çağrılmadan paketinizin veya dizininizin kurucusudur. Paketlerin veya işlevlerin diğer dosyalarınıza nasıl aktarılacağını belirler.

Katılımcıların %81'i bir eğitim kampına katıldıktan sonra teknik iş beklentileri konusunda daha emin hissettiklerini belirtti. Bugün bir eğitim kampı ile eşleştirin.

Ortalama bir eğitim kampı mezunu, bir eğitim kampına başlamaktan ilk işini bulmaya kadar, kariyer geçişinde altı aydan az zaman harcadı.

En basit durumda, __init__.py dosyası boş bir dosyadır. Ancak, başka bir yerden erişilebilmesi için içe aktarmayı ayarlamak için de kullanılır. Bunu yapmanın üç ana yolu vardır:

1. main_package/__init__.py ve açık içe aktarmalar:

.file1'den import file_1 # file_1 işlevin adı ve .file1 modülün/dosyanın adı .file2'den dosya_2'yi .file3'ten içe aktar file_3

Dosyaların her birini içe aktarmak için göreli içe aktarmaları kullanırız __init__.py içine. Bu dosyaların içinde, her dosyaya özgü işlevler vardır.

main.py'de, artık dosyanın üstünde açık kullanarak bir import ifadesi oluşturarak bu işlevlere erişebiliriz. import ifadeleri:

ana paketten import file_1, file_2, file_3 # Bu, yalnızca ihtiyacınız olanı içe aktarır file_1() # Bu benim dosyam 1! file_2() # Ve bu dosya 2! file_3() # Son olarak, işte dosya 3!

Bu bize main_package dışında tam olarak hangi modülleri kullandığımızı söyler.

2.main_package/__init__ .py ve standart içe aktarma:

import main_package # Bu, tüm paketi main_package.file_1( ) # Bu benim dosyam 1! main_package.file_2() # Ve bu dosya 2! main_package.file_3() # Son olarak, işte 3. dosya!

Bunun öncekiyle arasındaki tek fark, öncekinin yalnızca ihtiyacımız olanı (file_1, file_2, file_3) içe aktarmasıdır. . Diğeri modülü içe aktarır – bu nedenle işlev adlarına erişmek için nokta gösterimini kullanırız.

3. main_package/__init__.py ve joker karakter içe aktarma:

__init__.py içinde,, modüllerin/dosyaların listesine bir __all__ değişkeni ayarlayın. paket. Bu, yorumlayıcının main.py dosyasında joker içe aktarma ifadesini kullandığımızda nelerin dikkate alınması gerektiğini anlamasına yardımcı olacaktır. Tüm değişkenin her iki tarafta iki alt çizgi ile çevrelendiğine dikkat edin.

__all__ = ["file1", "file2", "file3"] 

main.py'de genel bir import ifadesi kullanacağız ve işleve erişmek için nokta gösterimini kullanacağız:

all değişkeni, joker karaktere *, o içe aktarmaya hangi modüllerin/dosyaların dahil edileceğini söylemeye yarar. main_package import *'dan okuduğumuzda, aslında onu from main_package import file1, file2, file3 olarak görmeliyiz. Ardından, yukarıda da görebileceğiniz gibi, işlev adına erişmek için nokta gösterimini kullanırız.





__init__.py Dosyası Olmadan Dosyaları İçe Aktarma

Başka bir dizinden bir dosya almak istiyorsanız, o dizin bir Python __init__.py dosyası içermelidir. örnek:

cakes import create

Bu ifade bir modülü içe aktarır “cakes” klasöründen “create” olarak adlandırılır. Kodumuzun çalışması için Cakes klasörümüzün şu iki dosyaya sahip olması gerekir:

cakes/create.py cakes/__init__.py

İlk dosya bizim modülümüzdür. İkinci dosya Python'a dizinimizin Python modülleri içerdiğini söyler. kodumuzu şu şekilde içe aktarın:

cakes.create

Biz yapamadı bu import ifadelerinden herhangi birini bir __init__.py dosyası olmadan kullanın.

Modülleri içe aktarma hakkında daha fazla bilgi edinmek için Python import ifadesi kılavuzumuza.




Sonuç

Python'daki __init__.py dosyası budur! Bunu projenizde nasıl kullanacağınız, içe aktarmayı nasıl kullanmak istediğinize bağlıdır.

Kurulumunuzun bir parçası olarak bir __init__.py dosyası eklemek, kodunuzu daha Pythonic yapar. Bunun nedeni, kodunuzun yapısının daha net olmasıdır. Yazılım geliştiriciler arasında daha fazla Pythonic kodu yazmak büyük bir hedeftir.

Burada’sa repl bu makaledeki Python koduyla. Yapının nasıl çalıştığını görselleştirmek ve kendi kodunuzla denemeler yapmak için bunu kullanın!

En iyi Python kursları ve çevrimiçi kaynaklar hakkında tavsiyeler için eksiksiz Python Nasıl Öğrenilir kılavuzu.





__init__ Python: StackOverflow Questions

Tutorials