> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 `import *`를 피해야 하는 이유는 무엇입니까?

Python에서 `import *`를 피해야 하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-15 19:26:02
원래의
582명이 탐색했습니다.

Why Should You Avoid `import *` in Python?

Python에서 Import *의 비밀 밝히기

Python에서 수수께끼의 명령 "import *"는 모듈의 리소스에 대한 전례 없는 액세스 권한을 부여합니다. 지정된 모듈뿐만 아니라 포함 폴더 내에 있는 소중한 __init__.py 파일도 가져옵니다. 결과적으로 축복받은 __init__.py 모듈은 현재 네임스페이스에 통합됩니다.

project.model에서 선언

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿