>백엔드 개발 >파이썬 튜토리얼 >'import *'는 실제로 Python에서 어떻게 작동합니까?

'import *'는 실제로 Python에서 어떻게 작동합니까?

DDD
DDD원래의
2024-11-16 14:45:03820검색

How Does

"import *" 수수께끼 풀기

"import *"가 가져오기는 무엇입니까?

파이썬에서 "import *"는 지정된 모듈의 모든 것을 현재 모듈로 가져옵니다. 이렇게 하면 모듈 이름 앞에 접두사를 붙이지 않고도 가져온 개체에 직접 액세스할 수 있습니다.

예:

>>> from math import *
>>> pi
3.141592653589793
>>> sin(pi/2)
1.0

이름 충돌 웹에 걸렸습니다

그러나 "*"를 사용하여 "모든 것"을 가져오는 것은 기존 변수 또는 함수와 네임스페이스 충돌을 일으킬 수 있으므로 권장되지 않습니다. 또한, 상당수의 개체를 가져오는 경우 비효율적일 수 있습니다.

명시적으로 가져오기 vs. "*"를 사용하여 가져오기

명시적으로 가져오기만 하는 것이 바람직합니다. 필요한 객체:

>>> from math import pi
>>> pi
3.141592653589793
>>> sin(pi/2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sin' is not defined

또는 모듈을 자체 네임스페이스로 가져올 수도 있습니다. 별칭:

>>> import math
>>> math.pi
3.141592653589793
>>> import math as m
>>> m.pi
3.141592653589793

"* 가져오기"에 대한 예외

어떤 경우에는 ""을 사용하여 모든 항목을 가져오는 것이 적절할 수 있습니다. 예를 들어, 일부 라이브러리는 ""을 사용하여 가져오도록 특별히 설계된 하위 모듈을 제공하며 일반적으로 사용되는 상수와 함수를 포함합니다.

"* 가져오기" 메커니즘 살펴보기

"import *"를 사용하면 다음 개체를 가져옵니다.

  • 에 나열된 모든 이름 모듈의 "__all__" 변수(정의된 경우).
  • "__all__" 변수가 정의되지 않은 경우 밑줄("_")로 시작하는 이름을 제외한 모든 이름.

서브 모듈의 미묘함

일반적인 인식과 달리 "from xyz import "는 하위 모듈을 가져오지 않습니다. 하위 모듈은 별도로 명시적으로 가져와야 합니다. "urllib.request import 에서".

위 내용은 'import *'는 실제로 Python에서 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.