__init__.py 예제

__init___py는 디렉토리를 로드 가능한 모듈로 처리합니다. __init__py 파일을 제거하면 파이썬은 더 이상 해당 디렉터리 내부의 하위 모듈을 찾을 수 없으므로 모듈가져오기 시도가 실패합니다. __init___py 파일을 사용하면 가져오기가 쉬워집니다. __init___py가 패키지 내에 있는 경우 함수 a()는 파일 b.py 가져올 수 있으므로 * 가져오기를 사용하면 모듈 패키지는 __init__py 콘텐츠가 적용됩니다. 이를 설명하기 위해 모듈을 활용하는 example1.py라는 파일을 만들어 보겠습니다. (기술적으로는 하나의 하위 모듈이 있습니다.) 사용 중인 이 방법의 예는 위에서 언급한 게시물에서 설명한 fsq 패키지입니다. 이 방법의 또 다른 단점은 하위 모듈에서 __init__py 대 __init__py에 있어야 할 것을 결정하기어려울 수 있다는 것입니다. 파일이 점점 더 커지고 복잡해짐에 따라 언제 꺼내야 할지 에 대한 호출이 필요합니다. 이 방법은 의사 소통이 가장 간단하고 적용하기 가장 간단합니다. __init___py에 아무 것도 포함하지 않는 것에 대한 회색 영역이 없습니다. 이 파일은 폴더가 파이썬 패키지로 간주되어야하며 다른 것은 없음을 나타내는 목적으로 제공 될 것입니다. __init__pyand를 사용하여 패키지를 만드는 방법을 배우는 이유를 이해하는 가장 좋은 방법은 몇 가지 간단한 예제를 실행하는 것입니다! 나는이 4 가지 접근 법의 각 찬량을 파고 게시물의 나머지 부분에서 야생에서 그 들의 예를 제공 할 것입니다. 패키지는 __path___라는 하나 이상의 특수 특성을 지원합니다.

이 목록은 해당 파일의 코드가 실행되기 전에 패키지의 __init___py를 보유하는 디렉터리 이름을 포함하는 목록으로 초기화됩니다. 이 변수는 수정할 수 있습니다. 이렇게 하면 패키지에 포함된 모듈 및 하위 패키지에 대한 향후 검색에 영향을 줍니다. 이 방법은 __init___py에서 비 가져오기 코드를 허용하지 않으므로 위의 #1 설명된 네임스페이스 문제로 인해 어려움을 겪는 것 같습니다. 그러나 개별 패키지에서 멤버를 가져오면 이를 우회할 수 있습니다. 예를 들어, my_func가 있는 경우 가져오기 foo로 액세스할 수 있기를 원했습니다. foo.my_func() a.py my_func를 넣은 다음 __init___py를 import my_func에서 가져올 수 있도록 할 수 있습니다.