Python의 절대 및 상대 가져오기

절대 수입



가져오기 설명을 작성하는 가장 좋은 방법과 마스터처럼 스타일을 지정하는 방법에 대해 실행 가능한 속도를 찾았습니다. 현재로서는 완전 수입품과 관련하여 좀 더 친숙해질 수 있는 이상적인 기회입니다.



플랫 아웃 가져오기는 벤처의 루트 조직자로부터 전체 방법을 활용하여 가져올 자산을 결정합니다.

구문 및 실제 예
다음과 같은 디렉토리 구조가 있다고 가정해 보겠습니다.

└── project
    ├── package1
    │   ├── module1.py
    │   └── module2.py
    └── package2
        ├── __init__.py
        ├── module3.py
        ├── module4.py
        └── subpackage1
            └── module5.py


package1과 package2라는 두 개의 하위 디렉토리가 포함된 project라는 디렉토리가 있습니다. package1 디렉토리에는 module1.py와 module2.py라는 두 개의 파일이 있습니다.

package2 디렉토리에는 module3.py와 module4.py라는 두 개의 모듈과 초기화 파일인 init.py라는 세 개의 파일이 있습니다. 여기에는 또한 module5.py 파일이 포함된 하위 패키지 디렉토리도 포함됩니다.

Absolute vs Relative Imports in Python에서 다음을 가정해 보겠습니다.

package1/module2.py에는 function1이라는 함수가 있습니다.
package2/init.py에는 class1이라는 클래스가 있습니다.
package2/subpackage1/module5.py에는 function2라는 함수가 있습니다.

다음은 절대 수입의 실제 예입니다.

from package1 import module1
from package1.module2 import function1
from package2 import class1
from package2.subpackage1.module5 import function2


Absolute Imports의 장단점



완전 수입품은 매우 명확하고 직접적이라는 사실에 비추어 선호됩니다. 어설션만 보면 수입 자산이 어디에 있는지 정확히 알 수 있습니다. 더욱이, 완전한 수입은 수입 조음의 현재 영역이 변경되는지 여부에 관계없이 상당한 수준을 유지합니다. 실제로 PEP 8은 명백한 수입을 제안합니다.

상대적 수입



일반 수입은 수입할 자산을 현재 지역, 즉 수입 설명이 있는 곳과 비교하여 결정합니다. 상대적 가져오기에는 특정 및 명시의 두 가지 종류가 있습니다. 암시적 상대 가져오기는 Python 3에서 과소 평가되었으므로 여기서는 다루지 않겠습니다.

구문 및 실제 예

상대 가져오기의 구문은 현재 위치와 가져올 모듈, 패키지 또는 개체의 위치에 따라 다릅니다. 다음은 상대 가져오기의 몇 가지 예입니다.

from .some_module import some_class
from ..some_package import some_function
from . import some_class


위의 각 수입 선언문에는 하나의 얼룩과 같은 것이 있음을 알 수 있습니다. 상대 수입은 지역을 나타내기 위해 현물 문서를 활용합니다.

단독 지점은 참조된 모듈 또는 번들이 현재 영역과 유사한 레지스트리에 있음을 의미합니다. 두 개의 dabs는 현재 영역의 상위 카탈로그, 즉 위의 레지스트리에 있음을 나타냅니다. 세 개의 탭은 그것이 조부모 카탈로그 등에 있음을 의미합니다. 이것은 아마도 Unix와 유사한 작업 프레임워크를 활용하는 오프 기회에 당신이 알아볼 수 있을 것입니다!

이전과 동일한 디렉토리 구조를 가지고 있다고 가정해 보겠습니다.

└── project
    ├── package1
    │   ├── module1.py
    │   └── module2.py
    └── package2
        ├── __init__.py
        ├── module3.py
        ├── module4.py
        └── subpackage1
            └── module5.py


다음과 같은 방법으로 function1을 package1/module1.py 파일로 가져올 수 있습니다.

# package1/module1.py

from .module2 import function1


module2.py는 현재 모듈인 module1.py와 같은 디렉토리에 있기 때문에 여기에서는 하나의 점만 사용합니다.

다음과 같이 class1 및 function2를 package2/module3.py 파일로 가져올 수 있습니다.

# package2/module3.py

from . import class1
from .subpackage1.module5 import function2


첫 번째 import 문에서 단일 점은 현재 패키지에서 class1을 가져오고 있음을 의미합니다. 패키지 가져오기는 기본적으로 패키지의 init.py 파일을 모듈로 가져옵니다.

두 번째 import 문에서는 subpackage1이 현재 모듈인 module3.py와 동일한 디렉터리에 있기 때문에 단일 점을 다시 사용합니다.

결론



완전하고 상대적인 수입에 대한 이 짧은 교육의 한계를 뛰어 넘었습니다! 현재 가져오기가 작동하는 방식에 대해 잘 알고 있습니다. 수입 신고서를 작성하기 위해 승인된 절차를 따랐고, 완전 수입과 상대적 수입의 차이를 알고 있습니다.

좋은 웹페이지 즐겨찾기