조용한 담장

[python] __import__, importlib.import_module 본문

tips

[python] __import__, importlib.import_module

iosroid 2021. 8. 17. 16:18

https://docs.python.org/ko/3/library/functions.html#__import__

 

내장 함수 — Python 3.9.6 문서

내장 함수 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있습니다. 여기에서 알파벳 순으로 나열합니다. abs(x) 숫자의 절댓값을 돌려줍니다. 인자는 정수, 실수 또는 __

docs.python.org

__import__(name, globals=None, locals=None, fromlist=(), level=0)
name 변수가 package.module 형식일 때, 일반적으로 name 에 의해 명명된 모듈이 아니라, 최상위 패키지(첫 번째 점까지의 이름)가 반환됩니다. 그러나 비어 있지 않은 fromlist 인자가 주어지면 name 에 의해 명명된 모듈이 반환됩니다.
# import spam.ham
spam = __import__('spam.ham', globals(), locals(), [], 0)
# from spam.ham import eggs, sausage as saus
_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)
eggs = _temp.eggs
saus = _temp.sausage
여기서 spam.ham 모듈이 __import__() 에서 반환됩니다. 이 객체로부터, 임포트 할 이름들을 가져온 후 해당 이름들로 대입됩니다.

 

submodule 을 import 할때는 . 까지 쓰자...

그런데

 

참고: 이것은 importlib.import_module() 과 달리 일상적인 파이썬 프로그래밍에서는 필요하지 않은 고급 함수입니다.

 

가능한 importlib 을 쓰라는 얘기다..

__import__() 를 쓰면 import importlib 을 생략할 수 있어서 편하지만

늬앙쓰가 굳이 왜 쓰냐는 느낌이니까 importlib 으로 쓰자...

 

importlib.import_module(name, package=None)
모듈을 임포트 합니다. name 인자는 절대나 상대적인 항으로 임포트 할 모듈을 지정합니다 (예를 들어 pkg.mod나 ..mod). 이름이 상대적인 항으로 지정되면, package 인자는 패키지 이름을 결정하기 위한 앵커 역할을 하는 패키지 이름으로 설정해야 합니다 (예를 들어 import_module('..mod', 'pkg.subpkg')는 pkg.mod를 임포트 합니다).
m = importlib.import_module('spam.ham', 'ham')

 

https://docs.python.org/ko/3/library/importlib.html#importlib.import_module

 

importlib — import의 구현 — Python 3.9.6 문서

importlib — import의 구현 소스 코드: Lib/importlib/__init__.py 소개 importlib 패키지의 목적은 두 가지입니다. 하나는 파이썬 소스 코드에서 import 문(그리고, 확장하면 __import__() 함수)의 구현을 제공하는

docs.python.org

 

import_module() 함수는 importlib.__import__() 주위를 감싸는 단순화 래퍼 역할을 합니다. 이는 함수의 모든 의미가 importlib.__import__()에서 파생됨을 뜻합니다. 이 두 함수의 가장 중요한 차이점은 import_module()이 지정된 패키지나 모듈(예를 들어 pkg.mod)을 반환하는 반면, __import__()는 최상위 패키지나 모듈(예를 들어 pkg)을 반환한다는 것입니다.

 

단순 래퍼 지만

반환하는게 좀 다르구나...

Comments