인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
package
- 기본 개념
패키지는 모듈을 모아놓은 폴더이다.
# 기본 예시 import sub.sub1.module1 import sub.sub2.module2 # sub(패키지)에서 모듈 파일을 import하는 방법이다. # 단, 같은 경로에 존재하는 패키지를 가져올 때 사용하는 방법이다. # 만약, 외부 경로에 있는 패키지의 모듈 파일을 import하고자 한다면, # append( ) 함수를 사용하여 해당 파일의 경로를 sys.path에 등록하고 불러오면 된다. sub.sub1.module1.mod1_test1() sub.sub1.module1.mod1_test2() sub.sub2.module2.mod2_test1() sub.sub2.module2.mod2_test2() # 패키지에 존재하는 모듈의 코드를 실행하는 방법이다. # 참고 # import sub.sub1.module1에서 sub.sub1.module1 코드 대신 # .sub.sub1.module1 코드를 사용해도 무방하다. # .은 현재 디렉토리를, ..은 부모(상위) 디렉토리를 의미하며 # 일반적으로 .은 생략 가능하고 모듈 내부에서만 주로 사용된다. # 활용 예시 # 예시1 from sub.sub1 import module1 from sub.sub2 import module2 as m2 # as는 alias(별명)을 뜻함 module1.mod1_test1() module1.mod1_test2() m2.mod2_test1() m2.mod2_test2() # 이처럼 from절을 사용하면 패키지의 경로가 복잡해서 코드가 비효율적으로 길어지는 # 문제를 해결할 수 있다.(더욱 간결한 코드작성 가능) # 또한, alias('as')를 사용하면 모듈을 불러오고 실행하는 코드를 # 더욱 간결하게 작성할 수 있다. # 예시2 from sub.sub1 import * # sub1 하위에 있는 모든 모듈파일을 가져옴 from sub.sub2 import * # sub2 하위에 있는 모든 모듈파일을 가져옴 module1.mod1_test1() module1.mod1_test2() module2.mod2_test1() module2.mod2_test2() # import *는 sub(패키지)하위에 있는 모듈 파일을 모두 불러온다는 의미이다. # 단, 이 경우에는 불필요한 모듈 파일까지 가져오기 때문에 리소스 낭비가 발생할 수 있다.
- 참고
# __init__.py 관련 내용 # 파이썬 3.3 버전부터는 __init__.py 파일이 없어도 패키지를 인식하고 사용할 수 있다. # 하지만 파이썬 3.3 하위버전에서는 여전히 패키지 내부에 __init__.py 파일이 존재해야만, # 파이썬이 패키지를 import하고 사용할 수 있다. # 따라서, 파이썬 하위버전과의 호환을 위해서라도 패키지를 만들 경우에는 # __init__.py 파일을 함께 만들어주는 것을 권장한다. # __init__.py 파일 안에 __all__ = ['module1']의 코드는 외부에서 # 패키지를 import할 경우에 오직 module1만을 사용할 수 있도록 허용한다는 의미이다. # 만약, __all__ = ['module2, module3, module4, ...'] 처럼 다수의 모듈 파일이 # 존재할 때, module1을 제외하면 패키지의 module1은 더 이상 외부에서 사용할 수 없다. # 즉, __all__ = [ ] 안에 존재하는 모듈만 외부에서 사용할 수 있도록 허가하는 기능이다. # 단, 파이썬 3.3 이후 버전부터는 __init__.py 파일이 없으면 위의 내용과 상관 없이 # 모든 모듈 파일을 import하고 사용할 수 있다.(__init__.py 파일을 삭제해도 무방함) # 하지만 파이썬 3.3 이후 버전에서도 __init__.py 파일 안에 __all__ = [ ]의 # 코드가 존재할 경우에는 __all__ = [ ]안에 있는 모듈만을 사용할 수 있다.
'Python' 카테고리의 다른 글
Python - Built in functions (0) | 2021.10.18 |
---|---|
Python - Exception (0) | 2021.10.18 |
Python - module (0) | 2021.10.18 |
Python - class (0) | 2021.10.15 |
Python - input (0) | 2021.10.15 |
댓글