코드 6-1을 작성하고 실행하면 프로그램이 잘 작동합니다. 처음부터 한 행씩 코드를 보면서 무슨 일을 하는 프로그램인지 분석하고, 이 프로그램을 절차 지향으로 바꿔 보겠습니다. 얼마나 알기 쉽게 변하는지 직접 느껴 보세요.
실행에 필요한 함수를 모아 둘 function.py 모듈을 만든 다음 sequential.py를 기능별로 쪼개 함수로 만듭니다. 코드 6-2는 파일의 데이터를 읽어오는 부분만 추린 것입니다.
코드 6-2
raw_data = {} wb = openpyxl.load_workbook('class_2_3.xlsx') ws = wb.active g = ws.rows for name, score in g: raw_data[name.value] = score.value
코드 6-2를 다음과 같이 함수로 바꿔 봅시다.
코드 6-3 oop1/oop1_1/functions.py ①
import openpyxl import math def get_data_from_excel(filename): ''' get_data_from_excel(filename) -> {'name1' : 'score1', 'name2' : 'score2', ...} 엑셀 파일에서 데이터를 가져옵니다 반환값은 key가 학생 이름이고 value가 점수인 딕셔너리입니다 ''' dic = {} wb = openpyxl.load_workbook(filename) ws = wb.active g = ws.rows for name, score in g: dic[name.value] = score.value return dic