ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 : 함수(Function), 클래스(Class), 모듈(Module), 패키지(Package)
    금융퀀트/프로그램기초 2024. 1. 31. 06:45
    반응형

    함수, 클래스, 모듈, 패키지의 관계

    프로그램을 만드는 것은 각각의 기능들을 만들고 그 기능들을 묶어내서 하나의 구조화된 기계를 만들어내는 과정이라고 생각하면 된다. 여기서 가장 최소의 기능을 가지는 것을 "함수(Function)"라고 하고, 그 함수들을 클래스(Class)로 묶어도 되고 묶지 않아도 된다. 클래스로 묶이거나 묶이지 않은 함수들은 모듈(module)이라는 하나의 파일에 담긴다. 그리고 이 모듈들은 패키지(package)라는 하나의 폴더에 담긴다. 함수, 클래스, 모듈, 패키지의 관계를 그림으로 그리면 아래 그림 1과 같다.

    그림1:  함수, 클래스, 모듈, 패키지 기본 관계

    위 그림 1과 같이 클래스로 묶인 함수 혹은 그냥 함수들이 모여서 하나의 모듈을 이루고, 모듈이 모여서 하나의 패키지 혹은 라이브러리가 된다. python 에서 다른 라이브러리를 참조한다는 것은 위 그림 1 왼쪽의 패키지 덩러리를 import(참조) 한다는 뜻이라고 생각하면 된다.

    패키지(=라이브러리)의 참조

    위 그림 1과 같은 패키지 덩어리를 참조할 때는 모듈별로 참조할 수도 있고, 특정 클래스만 찍어서 참조할 수도 있다. 아래 그림 2의 Case 1은 language라는 패키지에서 chi, eng, jpn, kor 이라는 모듈을 각각 참조한 경우이다. 이 때 chi 모듈의 greet 함수를 불러오기 위해서는 chi.greet()이라고 쓰면 되지만 eng 모듈의 greet은 ENGLISH 클래스로 한 번 감싸져 있기 때문에 eng.ENGLISH.greet() 이라고 쓰면 된다.

    그림2: 패키지, 모듈, 클래스, 함수 사용 예시

    Case 1처럼 모듈만 참조했을 때 사용의 복잡함을 피하기 위해서 보통은 Case 2와 같이 직접 클래스를 참조하는 방식으로 참조선언을 한다.(ex. from language.eng import ENGLISH)

    참조 선언을 할 때 무엇이 from에 들어가고 무엇이 import 에 들어가는지 헷갈릴 수 있는데, 최종적으로 참조하는 대상이 import 에 들어가고 최종적으로 참조하는 대상을 감싸고 있는 것이 from 에 들어간다고 생각하면 된다. (단, 함수를 최종적으로 참조선언을 할 수는 없다.: import greet 같은 건 안 된다.) 즉, language 패키지에서 모듈 덩어리를 참조하고 싶다면, from language import kor 이라고 선언하면 되고, language 패키지에서 kor 모듈의 KOREAN 클래스를 참조하고 싶다면, from language.kor import KOREAN 이라고 선언하면 된다.

    반응형
Designed by Tistory.