13.2.2 함수 작성하기
핫플레이스 프로젝트의 구조를 함수로 재구성했습니다. 이제 실제 코드로 옮겨 볼 차례입니다. 코드는 이미 11장에서 작성했고, 이 코드를 함수로 재구성하는 것이므로 앞서 작성한 코드를 보면서 진행하면 편합니다.
파일 읽기
첫 번째 함수인 file_open()부터 진행해 봅시다. 함수를 정의하는 형식에 따라 함수명을 적고 앞의 코드를 함수 안에 넣어 주면 됩니다. 바꿔 봅시다('11.2.1 데이터 파일일 읽고 행정동명과 행정동코드 연결하기'에 있는 변경 전 코드와 비교해 보세요).
file_open()
import csv
def file_open():
# 1.1 인구 데이터 파일 읽기
f = open('LOCAL_PEOPLE_DONG_201912.csv', encoding='utf8') # 또는 'eur-kr', 'cp949'
data = csv.reader(f)
next(data)
data = list(data)
# 1.2 행정동코드 파일 읽기
f2 = open('dong_code.csv', encoding = 'cp949') # 또는 'eur-kr', 'utf8'
code_data = csv.reader(f2)
next(code_data)
next(code_data)
code_data = list(code_data)
# 1.3 데이터 타입 변환하기 : 문자 --> 숫자
# 인구 데이터 변환하기
for row in data:
for i in range(1, 32):
if i <= 2:
row[i] = int(row[i])
else:
row[i] = float(row[i])
# 행정동코드 변환하기
for row in code_data:
row[1] = int(row[1])
return data, code_data
파일을 열 때는 별도의 데이터를 전달받지 않으므로 매개변수는 없어도 됩니다. 함수 내부에서는 파일 내용을 리스트로 만들고 이를 변수 data와 code_data에 저장한 후 마지막에 반환합니다. 그리고 프로그램에서 file_open()을 다음과 같이 호출합니다.
함수 호출 부분
data, code_data = file_open()
file_open() 함수의 결과, 즉 반환값을 data와 code_data에 저장합니다. file_open() 내부에 있던 data와 code_data는 지역변수지만, file_open() 함수의 반환값을 저장하는 data와 code_data는 전역변수입니다. 이름은 같지만, 사용 범위가 전혀 다르니 헷갈리면 안 됩니다. 전역변수 data와 code_data는 다른 함수에서도 읽을 수 있는 변수입니다.