Python__init__.py의 역할
1. 이 디렉터리가python의 모듈 패키지임을 표시(module package)
만약 당신이python의 관련 IDE를 사용하여 개발을 진행한다면, 디렉터리에 이 파일이 존재한다면, 이 디렉터리는module 패키지로 인식됩니다.
2. 모듈 가져오기 작업 간소화
우리의 모듈 패키지의 디렉터리 구조는 다음과 같다고 가정합니다.
.
└── mypackage
  ├── subpackage_1
  │  ├── test11.py
  │  └── test12.py
  ├── subpackage_2
  │  ├── test21.py
  │  └── test22.py
  └── subpackage_3
    ├── test31.py
    └── test32.py
from mypackage.subpackage_1 import test11
from mypackage.subpackage_1 import test12
from mypackage.subpackage_2 import test21
from mypackage.subpackage_2 import test22
from mypackage.subpackage_3 import test31
from mypackage.subpackage_3 import test32이 경우 __init__.py가 효과가 있어요.우리 먼저 이 서류가 어떻게 작동하는지 봅시다.
2.1 __init__.py는 어떻게 일합니까?
실제로 디렉토리에 __ 이 포함되어 있는 경우init__.py에서 import로 디렉토리를 가져오면 __init__.py 안의 코드.
mypackage 디렉토리에 __ 추가init__.py 파일로 실험하기:
.
└── mypackage
  ├── __init__.py
  ├── subpackage_1
  │  ├── test11.py
  │  └── test12.py
  ├── subpackage_2
  │  ├── test21.py
  │  └── test22.py
  └── subpackage_3
    ├── test31.py
    └── test32.py
print("You have imported mypackage")
>>> import mypackage
You have imported mypackage
2.2 제어 모듈 가져오기
우리 실험 하나 더 하자, mypackage/_init__.py 다음 문장을 추가합니다.
from subpackage_1 import test11
>>> import mypackage
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/home/taopeng/Workspace/Test/mypackage/__init__.py", line 2, in <module>
  from subpackage_1 import test11
ImportError: No module named 'subpackage_1'
원래, 우리가 import를 실행할 때, 현재 디렉터리는 변하지 않습니다. (하위 디렉터리를 실행하는 파일이라도) 완전한 패키지 이름이 필요합니다.
from mypackage.subpackage_1 import test112.3 게으름 피우는 가져오기 방법
때때로 우리는 가져오기를 할 때 게으름을 피우며 가방의 모든 내용을 가져온다
from mypackage import *__all__ 모듈 목록을 연결했습니다. from xx import*를 실행할 때 목록의 모듈을 가져옵니다.우리는__init__.py를 (으)로 수정합니다.
__all__ = ['subpackage_1', 'subpackage_2']
>>> from mypackage import *
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'subpackage_1', 'subpackage_2']
>>> 
>>> dir(subpackage_1)
['__doc__', '__loader__', '__name__', '__package__', '__path__', '__spec__']이 예에서 가져오는 것은
from mypackage import subpackage_1, subpackage_2저희는 subpackage에서_1 추가 __init__.py 파일:
__all__ = ['test11', 'test12']
#  test11
from mypackage.subpackage_1 import test11
>>> from mypackage import *
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'subpackage_1', 'subpackage_2']
>>> 
>>> dir(subpackage_1)
['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'test11']
>>> from mypackage.subpackage_1 import *
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'test11', 'test12']알고 있습니다__init__.py의 작업 원리를 이해하면 이 파일이 정상적인 python 코드 파일이라는 것을 이해할 수 있을 것이다.
따라서 이 파일에 초기화 코드를 넣을 수 있습니다.
Python__에 대한 간단한 이야기init__.py의 역할에 대한 기사는 여기까지입니다.init__.py 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보시기 바랍니다. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.