강의 홍보
I. 개요
- 나만의 함수를 작성해 본다.
- 실행가능한 함수를 만들어 본다.
II. 기존 내장 함수
- 함수는 특정 기능을 수행하는 코드를 의미한다.
- 함수는
Sum(), Len()을 의미한다.
x = [1,2,3,4,5]
print(sum(x))
print(len(x))
5
III 사용자 정의 함수 예제
- 이제 사용자 정의 함수를 사용하자.
- 함수 선언 시,
def는 define의 약자다.
def my_avg(x):
sum_var = sum(x)
len_var = len(x)
return sum_var / len_var
print(my_avg(x))
3.0
- 기본적인 사용정의 함수는 크게
매개 변수와 return으로 이루어진다.- 이 때의 매개변수는,
string, int, DataFrame 등 다양하게 올 수 있다. return의 의미는 일종의 함수를 실행한 뒤 반환하려는 output이다.
IV. 파이썬에서 실행모드 구축하기
- 사용자 정의 함수를 작성하였다면, 이제부터는
Main() 함수를 활용하여 코드를 빠르게 실행할 수 있도록 한다. 아래와 같이 코드를 작성하자. PyCharm, VSCode에서 main.py 안에 아래와 같이 코드를 작성해본다.
# -*- coding: utf-8 -*-
def main():
print("안녕하세요, Main() 입니다. ")
if __name__ == "__main__":
main()
안녕하세요, Main() 입니다.
- 위 구문은 일종의 파이썬 파일을 실행시키기 위한 일종의 규약이라 이해하면 좋을 것 같다.
__name__은 모듈의 이름이 저장되는 곳이다.__main__은 모듈의 시작점과 같다. main.py에서 __name__=="__main__"은 바꾸지 않는다.- 이 때, 위 파일을 작성하면,
shell에서 다음과 같이 실행한다.
~ $ python main.py
안녕하세요, Main() 입니다.
(1) 파일 구조
- 크게 두개의 파일을 작성할 것이다.
calculation.py에서 기본적인 코드를 작성한 뒤, main.py에서 해당 모듈을 가져와서 함수를 사용할 것이다.
(2) calculation.py 파일 작성 및 실행
# -*- coding: utf-8 -*-
a = 3
b = 4
def plus(a, b):
c= a+b
return c
def subtract(a, b):
c = a-b
return c
if __name__ == "__main__":
print("a + b =", subtract(a, b))
print("a - b =", plus(a, b))
- 위와 같이 파일을 작성한 뒤 저장한다.
- 그리고,
shell에서 다음과 같이 실행한다.
~ $ python calculation.py
a + b = -1
a - b = 7
(3) main.py 작성 및 실행
- 기존
calculation.py에서 if~이하의 구문을 제거한 후, 다시 저장한다. - 이번에는
main.py에서 아래와 같이 파일을 작성한다.
# -*- coding: utf-8 -*-
import calculation as cal
a = 3
b = 4
def main():
print("안녕하세요, Main() 입니다. ")
print("a + b =", cal.subtract(a, b))
print("a - b =", cal.plus(a, b))
if __name__ == "__main__":
main()
- 그리고 이번에는
shell에서 main.py를 실행한다.
~ $ python main.py
안녕하세요, Main() 입니다.
a + b = -1
a - b = 7
(4) 소결론
- 같은 파일 경로에 있다면, 다른
file에서 함수(=module)을 불러올 때는 패키지에서 파일을 불러오는 것처럼, import ~형태로 사용할 수 있다. - 그리고, 각 파일명 안에는 다양한 작성할 수 있고, 또한 불러올 수 있다.
V. 두개의 폴더를 활용한 실행모드 구축
- 이제 한 폴더 안에서 다른 파일의 함수를 불러올 수 있음을 확인하였다.
- 이제는 두개의 폴더를 만들어 각각의 기능을 구현해본다.
- 폴더는 크게 두가지다.
- 사칙연산을 의미하는
arithmetic - 데이터 전처리를 의미하는
dataPreprocessing
- 각각의 폴더안에 각 2가지의 파일을 작성할 예정이다.
- 마지막으로
main.py는 독립적으로 위치해 놓는다.
(1) Arithmetic 폴더
plus.py와 subtract.py안에 함수를 각각 저장한 뒤 작성한다.
# -*- coding: utf-8 -*-
def add(a, b):
c= a+b
return c
# -*- coding: utf-8 -*-
def minus(a, b):
c = a-b
return c
(2) dataPreprocessing 폴더
- 파일 불러오기를 실행하는
importData.py와 데이터 전처리를 담당하는 processing.py에 해당하는 소스코드 작성 후 각각 저장한다.
# -*- coding: utf-8 -*-
def readData():
print("~~ 데이터를 불러옵니다 ~~ ")
data = "빅쿼리에서 불러오는 데이터"
return data
# -*- coding: utf-8 -*-
from time import sleep
def process_data(data):
print("~~ 데이터 전처리 함수를 실행합니다! ~~")
modified_data = data + "가 수정 완료 되었습니다."
sleep(3)
print("~~ 데이터 전처리가 끝났습니다! ~~")
return modified_data
(3) main.py 수정
- 다음은
main.py를 아래와 같이 수정하도록 한다.
# -*- coding: utf-8 -*-
from arithmetic import plus as pl
from arithmetic import subtract as sub
from dataPreprocessing import processing
from dataPreprocessing import importData
a = 3
b = 4
def main():
print("~~ 사칙 연산을 시작합니다 ~~ ")
print("a + b =", sub.minus(a, b))
print("a - b =", pl.add(a, b))
print("~~ 사칙 연산을 종료합니다 ~~ ")
## 데이터 전처리 시작
data = importData.readData()
processing.process_data(data)
if __name__ == "__main__":
main()
- 그 다음
shell에서 다음과 같이 실행하면 아래와 같은 결과물을 얻게 될 것이다.
~ $ python main.py
~~ 사칙 연산을 시작합니다 ~~
a + b = -1
a - b = 7
~~ 사칙 연산을 종료합니다 ~~
~~ 데이터를 불러옵니다 ~~
~~ 데이터 전처리 함수를 실행합니다! ~~
~~ 데이터 전처리가 끝났습니다! ~~
(4) 파일구조 리뷰
.
├── arithmetic # 폴더
│ ├── plus.py
│ └── subtract.py
├── dataPreprocessing # 폴더
│ ├── importData.py
│ └── processing.py
├── main.py
VI. 결론
from의 각각의 폴더명을 의미한다.import는 동일 폴더내의 다양한 py 파일명을 의미한다.- 각각의 파일명안에 있는 다양한 함수들을 불러와서 사용할 수 있다.
- 프로젝트 파일을 제출할 시에는 위와 같이
main.py를 실행만 하더라도 결과가 나올 수 있도록 프로젝트 파일을 Refactoring해서 업로드하는 것을 추천한다.