본문 바로가기

Python

[모듈화03] 사칙연산 계산기 실습

계산기 모듈화를 해보자요

github : https://github.com/jihyeonjane/algorithm_codingtest/tree/master/python_module_practice/01calculate

 

일단 폴더 구조는 다음과 같음

01calculate
│
├── calc - 각종 계산식 파일 넣어둘 calc 폴더 생성
│	├── __init__.py - 테스트 할때 calc 내의 함수 일일이 불러 올 일 없도록 init에서 설정해줄거임
│	├── advanced.py - 곱셈, 나눗셈 함수
│	├── basic.py - 덧셈, 뺄셈 함수
│
├── test.py - 모듈 테스트

 

 

1) __init__.py 설정 이전 test.py 실행

# test.py (without __init__.py)

import calc.basic, calc.advanced

print(calc.basic.add(3,7))
print(calc.advanced.div(3,7))


# terminal 실행
python test.py

## 결과 출력됨

 

 

2) __init__.py 설정 이후 test.py 실행

# __init__.py

import calc.basic, calc.advanced


# test.py

import calc
print(calc.basic.add(3,7))
print(calc.advanced.div(3,7))

 

** calc 만 import 해도 __init__.py 에서 이미 임포트 했기 때문에 basic, advanced 안 불러와줘도 실행됨

 

 

3) __init__.py 의 __all__ 설정

__all__ 설정을 통해 원하는 패키지만 가져오도록 할 수 있음.

# __init__.py
## basic만 가져오기

import calc.basic, calc.advanced

__all__ = [
    "basic"
]

--------------------------------
# test.py

from calc import *
# 이렇게 불러와도 __init__.py에서 basic만 설정해놨기 때문에 advanced 안 불러와질 것...

print(basic.add(3,7))
# print(advanced.mul(3,7)) # advanced 안 불러와짐

 

4) test.py에서 바로 함수 호출 가능하도록 설정

# __init__.py
from calc.basic import *
from calc.advanced import *


# test.py
import calc

print(calc.add(3,7))
print(calc.mul(3,7))

 

 

** __init__.py 설정에 따라 원하는대로 함수 호출 가능하다는 것