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는 다른 함수에서도 읽을 수 있는 변수입니다.

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