함수란?
함수(Function)는 특정 작업을 수행하는 코드 블록입니다. 코드를 재사용 가능하게 만들고, 중복을 줄이며, 프로그램의 가독성을 높이는 데 도움을 줍니다.
함수 사용의 장점
코드 재사용성
한 번 정의한 함수는 여러 번 호출하여 사용할 수 있습니다. 동일한 작업을 여러 번 수행해야 할 때, 함수를 사용하면 코드의 중복을 줄이고 생산성을 높일 수 있습니다.
def greet(name):
print(f"안녕하세요, {name}님!")
# 동일한 함수를 여러 번 호출
greet("홍길동")
greet("김철수")
greet("이영희")
가독성 향상
함수로 코드를 나누면 각 부분의 역할이 명확해져 코드가 더 읽기 쉬워집니다. 특히, 함수 이름으로 작업의 목적을 설명할 수 있어 가독성이 크게 향상됩니다.
def calculate_area(width, height):
return width * height
area = calculate_area(5, 10)
print(f"면적: {area}")
유지보수 용이
함수를 사용하면 코드를 수정하거나 확장하기가 더 쉬워집니다. 문제가 생겼을 때, 함수 내부만 수정하면 동일한 작업을 수행하는 모든 코드가 자동으로 반영됩니다.
# 세금을 계산하는 함수
def calculate_tax(price, tax_rate=0.1):
return price * tax_rate
# 함수 수정 전
print(calculate_tax(100)) # 출력: 10.0
# 함수 수정 후 (세율 변경)
def calculate_tax(price, tax_rate=0.15):
return price * tax_rate
print(calculate_tax(100)) # 출력: 15.0
코드중복제거
함수를 사용하면 동일한 작업을 수행하는 코드를 반복해서 작성할 필요가 없습니다. 코드 중복은 유지보수의 큰 어려움 중 하나인데, 함수는 이를 방지합니다.
# 중복된 코드 사용 (비효율적):
print(10 * 20)
print(15 * 30)
print(25 * 40)
# 함수로 개선 (효율적):
def multiply(a, b):
return a * b
print(multiply(10, 20))
print(multiply(15, 30))
print(multiply(25, 40))
함수 정의하기
파이썬에서 함수를 정의하려면 def 키워드를 사용합니다. 함수 이름, 매개변수(선택 사항), 그리고 수행할 작업을 포함합니다.
기본문법
def 함수이름(매개변수1, 매개변수2, ...):
실행할 코드
return 반환값
- def: 함수를 정의할 때 사용하는 키워드.
- 함수이름: 함수의 이름으로, 작업의 목적을 나타내야 합니다.
- 매개변수: 함수가 입력받을 데이터 (선택 사항).
- 실행할 코드: 함수가 호출될 때 실행될 명령들.
- return: 함수의 실행 결과를 반환 (선택 사항).
간단한 함수 정의
def greet():
print("안녕하세요!")
greet()
# 출력: 안녕하세요!
매개변수가 있는 함수
def greet(name):
print(f"안녕하세요, {name}님!")
greet("홍길동")
# 출력: 안녕하세요, 홍길동님!
반환값이 있는 함수
함수는 return 키워드를 사용하여 결과값을 반환할 수 있습니다.
def add(a, b):
return a + b
result = add(5, 3)
print(result)
# 출력: 8
매개변수와 기본값
def greet(name="친구"):
print(f"안녕하세요, {name}님!")
greet()
# 출력: 안녕하세요, 친구님!
greet("김철수")
# 출력: 안녕하세요, 김철수님!
여러 매개변수 처리
튜플 형태로 처리
def add_all(*args):
return sum(args)
def add_all(*args):
return sum(args)
딕셔너리 형태로 처리
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="홍길동", age=30, job="개발자")
# 출력:
# name: 홍길동
# age: 30
# job: 개발자
람다 표현식이란?
람다 표현식은 간단한 함수 정의를 한 줄로 작성할 수 있는 파이썬의 문법입니다. 일반적으로 한 번만 사용되는 간단한 함수를 정의할 때 유용합니다.
기본 문법
lambda 매개변수1, 매개변수2, ... : 표현식
- lambda: 람다 표현식을 시작하는 키워드입니다.
- 매개변수: 함수가 받을 입력값입니다. 여러 개를 콤마로 구분할 수 있습니다.
- 표현식: 매개변수를 사용해 계산될 반환값입니다.
람다 표현식은 return 키워드 없이 항상 결과값을 반환합니다.
람다 표현식 vs 일반 함수
일반 함수
def add(a, b):
return a + b
result = add(5, 3)
print(result) # 출력: 8
람다 표현식
add = lambda a, b: a + b
result = add(5, 3)
print(result) # 출력: 8
람다 표현식은 def 키워드 대신 lambda를 사용하고, 반환값을 간단하게 표현할 수 있습니다.
Python의 Built-in Functions
Built-in Functions 1 | Built-in Functions 2 | Built-in Functions 3 | Built-in Functions 4 | Built-in Functions 5 |
abs() | dict() | help() | min() | setattr() |
all() | dir() | hex() | next() | slice() |
any() | divmod() | id() | object() | sorted() |
ascii() | enumerate() | input() | oct() | staticmethod() |
bin() | eval() | int() | open() | str() |
bool() | exec() | isinstance() | ord() | sum() |
bytearray() | filter() | issubclass() | pow() | super() |
bytes() | float() | iter() | print() | tuple() |
callable() | format() | len() | property() | type() |
chr() | frozenset() | list() | range() | vars() |
classmethod() | getattr() | locals() | repr() | zip() |
compile() | globals() | map() | reversed() | __import__() |
complex() | hasattr() | max() | round() | |
delattr() | hash() | memoryview() | set() |
CPU가 함수를 실행하는 방식
CPU는 **스택(Stack)**이라는 구조를 사용하여 함수를 호출하고 실행 상태를 관리합니다. 다음은 주요 단계입니다
- 함수 호출 시 스택에 추가(Push)
함수가 호출되면, 함수의 실행 정보를 스택에 저장합니다. - 함수 실행
CPU는 스택의 가장 위에 있는 함수의 명령을 실행합니다. - 함수 종료 시 스택에서 제거(Pop)함수가 실행을 마치면, 스택에서 해당 함수 정보를 제거하고 호출한 위치로 돌아갑니다.
'🐍 Python' 카테고리의 다른 글
파이썬 기초 : Pandas(판다스) DataFrame과 Series, 빌트인 함수 (0) | 2025.01.21 |
---|---|
파이썬 기초 : NumPy 연산을 효율적으로 처리하기 위한 라이브러리 (0) | 2025.01.21 |
파이썬 기초 : 조건문 , 반복문 (0) | 2025.01.20 |
파이썬 기초 : 튜플(Tuple) (0) | 2025.01.19 |
파이썬 기초 : 세트(Set) (0) | 2025.01.19 |