데이터 분석 파이썬 4주차
함수
- 입력을 받아 원하는 처리를 한 후 출력을 내보내는 작업을 수행하는 코드 블록이다.
- 코드를 그룹화하여 재사용 가능한 형태로 정의한다.
- 코드 재사용, 모듈화, 유지보수 용이성, 가독성 향상
함수 정의
def 함수이름(매개변수1, 매개변수2, ...):
# 함수 내부에서 수행할 작업
return 결과값 # (선택적) 함수의 결과를 반환
def 키워드를 사용해 함수를 정의한다.
함수 호출
결과 = 함수이름(인수1, 인수2, ...)
함수 예시
# 함수 정의
def greet(name):
message = "Hello, " + name + "!"
return message
# 함수 호출
greeting = greet("Alice")
print(greeting) # 출력: Hello, Alice!
greet라는 함수를 정의해서 이름을 전달하면 인사말을 반환하는 함수를 만들었다.
평균 계산 함수
def calculate_mean(numbers):
"""
주어진 숫자 리스트의 평균을 계산하는 함수
Parameters:
numbers (list of int or float): 평균을 계산할 숫자들의 리스트
Returns:
float: 주어진 숫자 리스트의 평균값
"""
total = sum(numbers)
mean = total / len(numbers)
return mean
# 함수 호출 및 예시
data = [10, 20, 30, 40, 50]
average = calculate_mean(data)
print("평균:", average)
calculate_mean라는 함수를 정의해서 숫자 리스트의 평균을 계산한다.
함수는 수자 리스트를 받아서 sum() 함수를 이용해 총합을 구하고, 리스트의 길이로 나누어 계산한 평균값을 반환한다.
주어진 문자열에서 각 문자의 출현 빈도를 딕셔너리로 반환하는 함수
def char_frequency(string):
freq_dict = {}
for char in string:
if char in freq_dict:
freq_dict[char] += 1
else:
freq_dict[char] = 1
return freq_dict
# 함수 호출
print(char_frequency("hello")) # 출력: {'h': 1, 'e': 1, 'l': 2, 'o': 1}
반복문에서 'in'은 시퀀스 데이터 타입 'string' 에서 변수 'char' 에 하나씩 대입하고, 조건문에서 'in'은 변수 'char'가 'freq_dict'에 존재하는지 확인해준다.
전역변수와 지역변수의 차이
전역변수 (Global Variables)
- 프로그램 전체에서 접근 가능한 변수, 어디서든 사용할 수 있다.
- 프로그램이 시작될 때 생성되고, 종료될 때까지 메모리에 유지된다.
지역변수 (Local Vairables)
- 특정 범위(ex. 함수 내부) 에서만 접근 가능한 변수
- 함수가 실행될 때 생성, 해당 범위에서 사용할 수 있으며, 함수가 종료되면 메모리에서 제거된다. (메모리 관리에 효율적)
- 함수 내에서 정의된 변수는 해당 함수 내에서만 사용 가능하다. (다른 함수나 코드 블록에서는 사용 불가)
예시
# 전역변수 예시
global_var = 10
def global_example():
print("전역변수 접근:", global_var)
global_example() # 출력: 전역변수 접근: 10
# 지역변수 예시
def local_example():
local_var = 20
print("지역변수 접근:", local_var)
local_example() # 출력: 지역변수 접근: 20
# 함수 내에서 전역변수를 수정하는 예시
def modify_global():
global global_var
global_var = 30
print("함수 내에서 수정된 전역변수:", global_var)
modify_global() # 출력: 함수 내에서 수정된 전역변수: 30
print("수정된 전역변수 확인:", global_var) # 출력: 수정된 전역변수 확인: 30
global_var는 전역변수이고, local_var는 local_example() 함수 내에서만 접근 가능한 지역변수이다.
함수 내에서 global 키워드를 사용하면 전역변수를 함수 내에서도 수정할 수 있다.
함수 내에서 전역변수를 수정해도 해당 변수는 전역적으로 수정된다.
인수 (argument)와 매개변수 (parameter)의 차이
매개변수와 인수를 혼동하기 쉬우니 주의!
매개변수 (parameter)
- 함수를 정의할 때 함수가 받아들이는 값을 지정하는 변수이다.
- 함수의 헤더 부분에서 정의되고, 함수 내부에서 사용된다.
- 함수를 정의할 때 매개변수를 정의하고, 함수가 호출될 때 매개변수에 해당하는 값을 전달받는다.
인수 (argument)
- 함수를 호출할 때 함수에 전달되는 값이다.
- 함수를 호출할 때 전달되는 실제 값으로, 함수를 호출할 때마다 다를 수 있다.
- 함수 호출 시 매개변수에 전달되는 값으로, 함수 내부에서 매개변수로 사용된다.
- 전달인자라고도 한다.
예시
# 매개변수(parameter) 예시
def greet(name): # 여기서 'name'은 매개변수입니다.
print("Hello, " + name + "!")
# 함수 호출할 때 전달되는 값이 인수(argument)입니다.
greet("Alice") # 함수 호출 시 "Alice"는 greet 함수의 매개변수 'name'에 전달됩니다.
greet 함수의 매개변수는 name, 인수는 Alice 이다.
def add_numbers(x, y): # 'x'와 'y'는 매개변수입니다.
result = x + y
return result
# 함수 호출 시 10과 20이 각각 'x'와 'y' 매개변수에 전달됩니다.
sum_result = add_numbers(10, 20) # 10과 20이 전달인자(Argument)입니다.
print("Sum:", sum_result) # 출력: Sum: 30
add_numbers 함수의 매개변수는 x, y이고 10과 20은 인수이다.
10과 20은 각각 x, y 매개변수로 전달된다.
위치 인수 (Positional Arguments)
- 함수 호출 시 전달되는 인자에는 위치 인수 (postitional argument)와 키워드 인수 (keyword argument) 두 가지가 있다.
- 위치 전달인수는 매개변수의 위치에 따라 전달되는 인수이다.
- 위치 전달인수는 인자의 값이 함수의 매개변수에 순서대로 맵핑된다.
def greet(name, age):
print("안녕하세요", name, "님! 나이는 ", age, "세입니다.")
# 위치 전달인자 사용
greet("철수", 30) # 출력: 안녕하세요, 철수님! 나이는 30세입니다.
철수가 name 매개변수에, 30이 age 매개변수에 순서대로 전달된다.
키워드 인수 (Keyword Argument)
- 함수 호출 시 인수를 순서대로 전달하는 대신, 특정 매개변수에 값을 할당하여 전달하는 것을 말한다.
def greet(name, age):
print("이름:", name)
print("나이:", age)
# 키워드 인수를 사용하여 함수 호출
greet(name="Alice", age=30)
기본값 (Default Values)
- 함수의 매개변수에 기본값을 설정할 수 있다.
- 매개변수에 인수가 전달되지 않았을 때 기본값으로 사용된다.
def greet(name="Guest", age=25):
print("이름:", name)
print("나이:", age)
# 기본값이 설정된 함수 호출
greet()
name과 age는 각각 Guest와 25의 기본값을 가진다.
키워드 인수와 기본값 함께 사용하기
def greet(name="Guest", age=25):
print("이름:", name)
print("나이:", age)
# 키워드 인수를 사용하여 함수 호출
greet(name="Alice", age=30)
# 일부 매개변수에만 키워드 인수 사용하여 호출
greet(name="Bob")
가변 인수 (Variable-length Arguments)
- 여러 개의 인수들을 받을 수 있는 함수를 만들기 위해 가변인수를 활용할 수 있다.
- 파이썬에서는 *args와 **kwargs를 사용한다.
- args는 함수 호출 시 임의의 개수의 위치 인수를 전달한다.
- kwargs는 함수 호출 시 임의의 개수의 키워드 인수를 전달한다.
def sum_values(*args):
total = 0
for num in args:
total += num
return total
result = sum_values(1, 2, 3, 4, 5)
print("합계:", result) # 출력: 합계: 15
sum_values 함수는 임의의 개수의 위치 인수를 받아 합계를 계산.
args라는 튜플로 위치 인수들을 받아 처리한다.
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, country="USA")
print_info 함수는 임의의 개수의 키워드 인수를 받아 정보를 출력한다.
kwargs라는 딕셔너리로 키워드 인수들을 받아 처리한다.
QUIZ
def calculate_average(data):
total = sum(data)
length = len(data)
average = total / length
return average
data = [2, 4, 6, 8, 10]
result = calculate_average(data)
print("평균:", result)