본문 바로가기

작업 공간/프로그래밍 [파이썬 기초] 8. 모듈과 패키지

by 서울나기 2020. 1. 22.

1. 모듈 module

모듈은 코드를 잘 모아서 기능 하나를 구현한 파일을 말한다. 다른 곳에서 import를 사용해서 모듈을 가져올 수 있고 클래스와 마찬가지로 . 콤마를 이용해서 모듈에 포함된 함수를 사용할 수 있다. 파이썬에는 이러한 다양한 모듈이 있고, 다른 사람이 만든 좋은 모듈도 사용할 수 있다.

import 모듈이름
모듈이름.함수이름()
import random # 렌덤 모듈을 불러온다.

# choice 무작위로 선택하는 함수
fruits = ['apple', 'banana', 'lemon']
my_fluit = random.choice(fruits)
print(my_fluit) # 실행할 때 마다 값이 달라진다.

# .sample 리스트에서 n개의 값을 중복 없이 선택하는 함수
fruits = ['apple', 'banana', 'lemon']
my_fluit = random.sample(fruits, 2)
print(my_fluit) # ['banana', 'apple']식으로 무작위 출력

# .randint 정해진 정수 범위안에서 정수 하나를 무작위로 돌려준다.
my_int = random.randint(0, 10)
print(my_int)

여러 기능을 하는 모듈이 세상에는 많기 때문에 필요한 모듈을 검색해서 사용하면 된다.

 

* import ~ as ~

모듈 이름이 길 경우 별칭을 지을 수 있다.

import just_do_it as jd

as ~ 를 뒤에 붙이면 just_do_it 함수는 이 다음부터 jd로 쓸 수 있다.

 


2. 패키지 package

패키지는 어떤 기능들을 구현하는 모듈의 합이다. 쉽게 말해 패키지는 공구함을 말하는 것 같다. 공구함을 열어보면 그 안에는 다양한 작업에 사용되는 공구들이 있다. 이것을 모듈이라고 보면 된다.

 

패키지는 내가 만든 모듈을 공유하고 싶을 때 일종의 제품의 마감을 하는 방법이다.

 

  1. 폴더를 만든다. 폴더 이름이 패키지 이름이다.
  2. 폴더 안에 모듈이 들어있는 파일을 넣는다.
  3. __init__.py 파일을 만든다. 모듈에 패키지에 대한 일종의 정보라고 할 수 있다.

 

예를 들어 앞의 코드를 패키지로 만든다면 일단 폴더를 만들어 클래스만 묶어서 저장한다.

# 팽수 폴더 안에 person.py로 저장

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def say_hello(self, to_name):
        print(f'안녕. {to_name}! 나는 {self.name}!, 나이는 {str(self.age)}살이야!')

class Ebs(Person):
    def arrest(self, to_arrest):
        print(f'넌 체포됐다, {to_arrest}.')

class Programmer(Person):
    def programmer(self, to_program):
        print(f'파이썬으로 다음에는 {to_program}을 만들자.')

 

다음은 __init__.py를 작성한다.

from .파일이름 import 클래스이름
# __init__.py로 저장

from .person import Person, Ebs, Programmer
# 콤마는 "이 폴더에 있는"을 뜻한다.
# 이 폴더에 있는 person.py 에서 Person, Ebs, Programmer 클래스 불러줘.

from .person import * # 한번에 클래스를 다 가져오고 싶으면 * 별을 붙인다.

이렇게 패키지가 만들어 졌다. 쉽다.

 

이걸 외부에서 사용하고 싶으면 폴더 밖에 파일을 하나 더 만들어 보자.

from 팽수 import * # 팽수 패키지에서 클래스 전부를 가져와줘~

팽수 = Person("팽수", 10)
ebs = Ebs("EBS", 20)
pro = Programmer("프로그래머", 25)

팽수.say_hello("바보")
ebs.arrest("팽귄")
pro.programmer("웹")
pro.say_hello("팽수")

# 윗장의 '클래스 상속'에 있는 코드와 같은 결과

그림을 보면 팽수 폴더에 아까 만든 클래스 파일이 있고 good.py에서 불러들일 수 있음을 알 수 있다.


여기서 파이썬의 기초 정리를 마친다.

 

각각의 항목은 더 깊이 공부를 해야겠지만 여기 정리된 것들은 파이썬을 한다면 일단을 알아야할 가장 기초적인 것들을 정리한 것이다. 디테일한 부분들은 앞으로 포스팅을 통해 정리해 나갈 예정이다.

댓글