Python 시작하기 #2 : 함수와 입출력
안녕하세요:) 이번 포스팅에서는 Python에서 함수(Function)의 정의와 사용 방법, 그리고 함수의 입출력 과정에 대해 알아보겠습니다.
실습 링크
https://github.com/jjangmo91/ParkLab/blob/main/Python/03_Functions_and_Input_Output.ipynb
ParkLab/Python/03_Functions_and_Input_Output.ipynb at main · jjangmo91/ParkLab
Contribute to jjangmo91/ParkLab development by creating an account on GitHub.
github.com
함수(Function)란 무엇일까요?
프로그래밍에서 함수란 특정 작업을 수행하는 코드 블록을 말합니다. 주로 반복되는 로직을 효율적으로 재사용할 수 있도록 합니다. 데이터 분석이나 생태학, 보전생물학 분야에서는 같은 계산(예: 개체밀도, 생물다양성 지수, 탄소 흡수량 등)을 여러 데이터에 반복해서 적용해야 하므로, 함수를 통해 효율성을 높일 수 있습니다.
함수를 사용하면 다음과 같은 장점이 있습니다.
- 재사용 가능성 : 동일한 계산 로직을 여러 데이터에 반복 적용 가능
- 가독성 향상 : 코드가 명확하고 구조적으로 구성
- 디버깅 용이 : 오류 발생 시 함수 단위로 문제점을 쉽게 점검 가능
함수의 기본 구조
Python에서 함수를 정의할 때는 def 키워드를 사용하며, 입력값(매개변수, parameter)을 받아 작업을 수행한 후 결과(반환값, return value)를 반환합니다. 일반적인 "함수 정의 구조"는 다음과 같습니다.
def 함수이름(매개변수1, 매개변수2):
실행할 코드
return 반환값
함수 정의 예제: 개체밀도 계산하기
다음은 population_density라는 이름의 함수 예제입니다. 이 함수는 두 개의 매개변수(population_count, habitat_area)를 입력으로 받아, 개체 수를 서식지 면적으로 나누어 개체밀도를 계산한 뒤, 그 결과를 result라는 지역 변수(local variable)에 저장합니다. 그 후 이 결과를 반환값으로 돌려줍니다.
# 기본 함수 정의
def population_density(population_count, habitat_area):
result = population_count/habitat_area
return result
이렇게 정의하면 함수 외부에서 계산 결과를 다른 변수에 저장하거나 출력하여 활용할 수 있습니다. 참고로 Python 공식 스타일 가이드인 PEP 8에서는 코드의 일관성과 가독성을 위해 "함수명", "변수명" 등 식별자(identifier)를 "snake_case" 형태로 작성할 것을 권장합니다. snake_case는 모든 문자를 소문자로 쓰고, 단어 사이를 밑줄(_)로 구분합니다. 대부분의 오픈소스 라이브러리 프레임워크에서도 snake_case를 사용하며 대규모 프로젝트에서 서로 다른 스타일이 혼합될 때 가독성이 떨어지는 것을 방지합니다.
함수 호출 및 입출력 예제
이제 앞에서 정의한 population_density 함수를 호출하여 사용할 수 있습니다. 함수 호출 시 매개변수(parameter)에 전달하는 실제 값을 인자(argument)라고( 합니다. 예를 들어, 반달가슴곰 개체 수가 89마리이고 서식지 면적이 483km2일 때 개체밀도(density)를 계산하고 출력하는 예제는 다음과 같습니다.
# 함수 호출 및 결과 출력
density = population_density(89, 483)
print(density)
위 코드에서 population_density(89, 483)는 함수 호출을 통해 입력값을 전달하는 과정이고, 그 결과를 density 변수에 저장하여 print() 함수를 통해 출력한 것입니다. # 출력 결과는 포스팅 상단의 실습 링크를 통해 알아보세요:)
매개변수(parameter)와 인자(argument)
함수를 정의할 때 괄호 안에 지정하는 변수는 매개변수라고 하며, 함수를 호출할 때 실제로 전달하는 값을 인자라고 합니다. 매개변수는 함수 내부에서 로직을 수행하기 위한 일종의 자리 표시자이고, 인자는 실제 값으로 매개변수에 전달됩니다.
지역변수(local variable)와 전역변수(global variable)
지역변수와 전역변수는 프로그래밍에서 변수가 작동하는 범위와 접근 가능한 위치를 나타내는 개념입니다.
- 전역변수 : 함수 외부의 정의된 변수로, 프로그램 전체에서 접근 및 수정이 가능합니다.
- 지역변수 : 특정 함수나 메서드 내부에서만 정의되고 해당 함수 내에서만 유효한 변수입니다.
# 전역변수 (Global Variable)
species_population = 1000 # 전체 서식지의 종 개체수
def observe_local_habitat():
''' 지역변수 (Local Variable) '''
species_population = 45 # 특정 관찰 구역에서의 종 개체수
print("관찰된 서식지 내 종의 개체수:", species_population)
# 함수 호출 (지역변수 출력)
observe_local_habitat()
# 전역변수 출력
print("전체 서식지의 종 개체수:", species_population)
전역 변수를 과도하게 사용하면 프로그램 전반에 걸친 의존성이 커져 의도치 않은 사이드이펙트나 디버깅으 ㅣ어려움이 발생할 수 있습니다. 반면 지역 변수는 함수 내부에 캡슐화되어 독립적인 동작, 모듈화, 가독성, 유닛 테스트 및 유지보수성을 한층 강화합니다. 따라서, 가능하면 전역 변수 사용을 최소화하고, 함수에는 필요한 데이터만 parameter로 전달하여 순수 함수(pure function) 스타일로 설계하는 것을 권장합니다.