더북(TheBook)

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

파일을 열 때는 별도의 데이터를 전달받지 않으므로 매개변수는 없어도 됩니다. 함수 내부에서는 파일 내용을 리스트로 만들고 이를 변수 datacode_data에 저장한 후 마지막에 반환합니다. 그리고 프로그램에서 file_open()을 다음과 같이 호출합니다.

함수 호출 부분

data, code_data = file_open()

file_open() 함수의 결과, 즉 반환값을 datacode_data에 저장합니다. file_open() 내부에 있던 datacode_data는 지역변수지만, file_open() 함수의 반환값을 저장하는 datacode_data는 전역변수입니다. 이름은 같지만, 사용 범위가 전혀 다르니 헷갈리면 안 됩니다. 전역변수 datacode_data는 다른 함수에서도 읽을 수 있는 변수입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.