Python에서 수수께끼의 명령 "import *"는 모듈의 리소스에 대한 전례 없는 액세스 권한을 부여합니다. 지정된 모듈뿐만 아니라 포함 폴더 내에 있는 소중한 __init__.py 파일도 가져옵니다. 결과적으로 축복받은 __init__.py 모듈은 현재 네임스페이스에 통합됩니다.
import의 기능을 사용하면 "from"을 명시적으로 선언해야 합니다. project.model import __init__"가 증발합니다. 간단한 "from project.model import "는 project.model 모듈과 그 신성한 __init__.py 파일 내의 모든 것을 포함하는 데 충분합니다.
import *의 매력은 지정된 모듈에서 명명된 모든 개체(밑줄로 시작하는 개체 제외)를 현재 네임스페이스로 가져오는 기능에 있습니다. 이렇게 하면 모듈 식별자 앞에 이름을 붙일 필요 없이 가져온 개체에 번거로움 없이 액세스할 수 있습니다.
예를 들어 다음 스니펫을 고려해 보세요.
from math import *
이 마법의 주문을 사용하면 사전 지식 없이 파이의 힘을 원활하게 휘두르기 위해:
pi 3.141592653589793
그러나 수입의 엄청난 힘 *에는 대가가 따릅니다. 이는 네임스페이스 충돌의 위험을 가져오고 현재 범위 내의 기존 변수를 덮어쓸 가능성이 있습니다. 또한 대상 모듈에 객체가 너무 많으면 비효율적일 수 있습니다. 마지막으로 아마도 가장 중요한 것은 코드의 자체 문서화 특성을 억누르고 변수, 메서드 및 클래스의 출처를 미스터리에 가두어 둔다는 것입니다.
따라서 현명한 우리는 import *를 임시 테스트용으로 예약하고 프로덕션 코드에 대해 보다 명시적인 대안을 선호합니다. 한 가지 신중한 선택은 원하는 개체만 명시적으로 가져오는 것입니다.
from math import pi
또는 전체 모듈을 고유한 네임스페이스 아래로 가져오는 것이 합리적인 절충안이 될 수 있습니다.
import math as m
수입의 미스터리를 풀려면*, 그 작동 방식을 이해하는 것이 필수적입니다. 기본적으로 이름이 지정된 모든 개체를 가져옵니다(밑줄로 시작하는 개체 제외). 그러나 지정된 모듈이 all 변수를 정의하는 경우 우선순위가 주어지며 해당 변수 내에 열거된 이름만 가져옵니다.
많은 표준 Python 라이브러리는 urllib 모듈의 유비쿼터스 확장인 urllib.request와 같은 하위 모듈로 구성됩니다. import * from urllib는 이러한 신성한 홀을 통과하지 않는다는 점에 유의하는 것이 중요합니다. 액세스하려면 별도의 import 문이 필요합니다.
from math import *
간단한 import * 명령은 전체 모듈의 콘텐츠를 현재 네임스페이스로 가져올 수 있는 기능을 제공하여 엄청난 힘을 발휘합니다. 그러나 이는 네임스페이스 충돌, 비효율성 및 자체 문서화 부족의 위험에 빠지지 않도록 주의해서 사용해야 하는 힘입니다. 프로덕션 코드의 경우 보다 명확하고 구조화된 가져오기 방식이 평온함과 명확성을 향한 길입니다.
위 내용은 Python에서 `import *`를 피해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!