영감이 번뜩이는 삶

[파이썬 입문] 패키지 본문

Python 도전기

[파이썬 입문] 패키지

돌굴러가유피하세유 2022. 12. 18. 21:00
반응형

 

네이버 지식백과 참조

 

패키지는 보통 묶음이나 덩어리 정도의 뜻으로 알려져있어유 그에 맞게 파이썬의 패키지도 비슷하게 생각하면 돼유
패키지는 디렉토리(폴더)와 파일(모듈)로 이뤄져있어유

간단하게 보자면 이런 식인거쥬
각 디렉토리에 __init__ 파일과 하위 디렉토리 그리고 모듈 기타 등등이 있는거에유
어떤 구조로 이루어진지 알았으니 예시를 통해 설명해나갈께유

우선, import에 대한 내용이 주로 다뤄지기 때문에 모듈 import 전에 라이브러리에 사용할 폴더를 추가시켜줘야해유
이 부분은 모듈에서 다뤘으니 복습겸 참고하시기 바래유

 

[파이썬 입문] 모듈2

지난 글에서 기본적으로 import 명령은 같은 폴더에 있을때 가능하다고 했었쥬 그렇다면 계속 그래야될까 찾아보면 당연히 아니에유 그딴법이 어딨겠어유 아래와 같은 코드를 가진 파일을 만들

anordinaryman.tistory.com



__init__.py의 용도 먼저 알아볼께유
이 파일이 있는 디렉토리가 패키지임을 알려주는 증표에유
또한 각 디렉토리별로 * 기호로 어떤 모듈을 불러올 수 있는지 정의해놓은 파일이기도 해유

# ex3/data/__init__.py
__all__ = ['kim', 'lee', 'park'] # import * 사용시 해당 모듈을 불러옴


모듈에 간단한 문장만 넣어놓고 Shell에서 테스트해보면 확실히 알 수 있어유

# ex3/data/kim.py # lee.py, park.py 동일
def call():
    print("안녕하세유 김씨에유")
# Shell에서 실행
>>> from ex3.data import *
>>> kim.call()
안녕하세유 이씨에유
>>> lee.call()
안녕하세유 김씨에유
>>> park.call()
안녕하세유 박씨에유
>>> han.call() # 실제로 모듈이 있더라도 __init__.py에 없으므로 오류 발사
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    han.call()
NameError: name 'han' is not defined

 

★파이썬 기본 라이브러리에 있는 패키지와 동일한 이름을 갖는다면 오류를 뿜어낼 가능성이 매우 높으니 주의하세유

 

import한 모듈의 함수를 실행하기 전에 반드시 알아야 할 점은
import (함수)가 아닌 import (패키지).(패키지).(모듈)과 같이 사용할땐 마지막은 꼭 모듈 또는 패키지!!!
라는 것을 꼭 기억하도록 해유

import된 대상이 패키지라면 __init__.py에 정의된 변수나 모듈(모듈 내의 클래스, 함수 등까지)을 사용할 수 있고,
import된 대상이 모듈이라면 해당 모듈에 정의된 변수, 클래스, 함수 등을 사용할 수 있어유

몇가지 예시로 마무리할께유

# Shell에서 실행
>>> import ex3.data.kim
>>> ex3.data.kim.call()  # 패키지.패키지.모듈까지 import >> 패키지.패키지.모듈.함수 형태로 호출
안녕하세유 김씨에유
>>> kim.call()
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    kim.call()
NameError: name 'kim' is not defined

>>> from ex3 import data
>>> data.kim.call()  # 패키지까지 import >> 해당 패키지.모듈.함수 형태로 호출
안녕하세유 김씨에유

>>> from ex3.data.kim import call
>>> call()  # 모듈 내 함수까지 import >> 바로 함수 호출 가능
안녕하세유 김씨에유


헷갈리는구만유~ 

 

반응형

'Python 도전기' 카테고리의 다른 글

[파이썬 입문] 기본 내장 함수  (0) 2022.12.30
[파이썬 입문] 오류 발생/처리  (0) 2022.12.28
[파이썬 입문] 모듈2  (0) 2022.12.16
[파이썬 입문] 모듈1  (0) 2022.12.14
[파이썬 입문] 클래스2  (0) 2022.12.11
Comments