함수란?
- 재사용 가능한 코드 블록 으로, 반복작업이나 프로그램이 복잡하거나, 테스트가 필요하거나 다른 개발자와 협업시 사용합니다.
- 함수는 특정 작업을 수행하도록 정의된 코드 블록으로, 재사용 가능성을 높이고, 코드의 가독성과 유지보수성을 향상시킴.
- Python에서 함수는 def 키워드를 사용하여 정의.
def greet(name):
return f"안녕하세요, {name}님!"
message = greet("Alice")
print(message) # 출력: 안녕하세요, Alice님!
함수의 구성
매개변수 (Parameters)
- 함수가 입력값(인수)을 받을 때 사용하는 변수.
- 여러 개의 매개변수를 사용할 수 있으며, 각 매개변수는 콤마(,)로 구분함.
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 출력: 8
## Multi parameters
def multiply(x, y, z):
return x * y * z
print(multiply(2, 3, 4)) # 출력: 24
반환값 (Return Value)
- 함수가 작업을 완료한 후 결과를 반환할 때 사용됨.
- 반환값은 return 키워드를 사용해 지정함.
# 단일 반환
def square(n):
return n * n
print(square(5)) # 출력: 25
# 복수 반환
def calculate(a, b):
sum_value = a + b
diff_value = a - b
return sum_value, diff_value
sum_result, diff_result = calculate(10, 5)
print(sum_result) # 출력: 15
print(diff_result) # 출력: 5
# 반환값 없는 함수
def say_hello():
print("Hello!")
result = say_hello()
print(result) # 출력: None
기본값 (Default Parameter)
- 매개변수에 기본값을 지정하여, 함수 호출 시 해당 인수를 생략할 수 있습니다.
def greet(name="손님"):
return f"안녕하세요, {name}님!"
print(greet()) # 출력: 안녕하세요, 손님님!
print(greet("Alice")) # 출력: 안녕하세요, Alice님!
## Multi default
def order(item, quantity=1, price=1000):
return f"{item} {quantity}개 주문하셨습니다. 총 가격은 {quantity * price}원입니다."
print(order("사과")) # 출력: 사과 1개 주문하셨습니다. 총 가격은 1000원입니다.
print(order("바나나", 2)) # 출력: 바나나 2개 주문하셨습니다. 총 가격은 2000원입니다.
print(order("딸기", 3, 1500)) # 출력: 딸기 3개 주문하셨습니다. 총 가격은 4500원입니다.
가변 매개변수 (Variable-Length Arguments)
1) args
- 위치 인수를 튜플 형태로 전달.
- 입력 인수의 개수가 정해지지 않은 경우 사용.
2) *kwargs
- 키워드 인수를 딕셔너리 형태로 전달.
# *args
def add(*args):
return sum(args)
print(add(1, 2, 3)) # 출력: 6
print(add(10, 20, 30, 40)) # 출력: 100
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
# **kwargs
print_info(name="Alice", age=30, city="Seoul")
# 출력:
# name: Alice
# age: 30
# city: Seoul
# *args & **kwargs
def mix_parameters(a, b, *args, **kwargs):
print(f"a: {a}, b: {b}")
print("args:", args)
print("kwargs:", kwargs)
mix_parameters(1, 2, 3, 4, 5, key1="value1", key2="value2")
# 출력:
# a: 1, b: 2
# args: (3, 4, 5)
# kwargs: {'key1': 'value1', 'key2': 'value2'}
함수 사용 시 주의사항
- 함수의 역할을 분명히 하기:
- 하나의 함수는 하나의 작업만 수행하도록 설계.
- 매개변수 순서에 주의:
- 기본값이 있는 매개변수는 항상 기본값이 없는 매개변수 뒤에 위치해야 함.
- 반환값 처리:
- 반환값을 적절히 처리하고, 반환값이 없는 경우 함수의 동작을 명확히 이해해야 함.
- 가변 매개변수 남용 주의:
- args와 *kwargs는 유용하지만, 지나치게 사용하면 코드 가독성이 떨어질 수 있다.
함수의 종류
- 사용자 정의 함수:
- 사용자가 필요에 따라 정의하는 함수.
- 내장 함수:
- Python이 기본적으로 제공하는 함수.
- 예: print(), len(), sum(), sorted()
- 익명 함수 (Lambda 함수):
- 이름이 없는 간단한 함수를 정의할 때 사용.
square = lambda x: x**2
print(square(5)) # 출력: 25
- 재귀 함수(Recursive)
- 함수 내부에서 자기 자신을 호출하는 함수.
def factorial(n):
if n == 0:
return 1
return n * factorial(n - 1)
Python 내장 함수란?
정의
- 내장 함수는 Python에서 기본적으로 제공하며, 별도의 정의나 모듈 임포트 없이 바로 사용할 수 있는 함수.
- 데이터 변환, 수학 연산, 문자열 처리 등 다양한 작업을 손쉽게 수행할 수 있도록 설계됨.
내장 함수 예시
print() | 데이터를 콘솔에 출력. |
input() | 사용자로부터 입력받음. |
len() | 데이터의 길이(요소 개수) 반환. |
type() | 데이터 타입 반환. |
int(), float(), str() | 데이터 타입 변환. |
sum() | 숫자 데이터의 합계 반환. |
min(), max() | 최솟값과 최댓값 반환. |
sorted() | 데이터 정렬 후 새로운 리스트 반환. |
abs() | 숫자의 절댓값 반환. |
round() | 숫자를 지정된 자릿수까지 반올림. |
2. 자주 사용하는 내장 함수
1) 출력과 입력
- print(): 데이터를 출력.
print("Hello, World!") # 출력: Hello, World!
print("Python", "is", "fun", sep="-") # 출력: Python-is-fun
- input(): 사용자로부터 입력받기.
name = input("이름을 입력하세요: ")
print(f"안녕하세요, {name}님!")
2) 데이터 정보 확인
- len(): 데이터의 길이(요소 개수)를 반환.
fruits = ["apple", "banana", "cherry"]
print(len(fruits)) # 출력: 3
text = "Hello"
print(len(text)) # 출력: 5
- type(): 데이터 타입을 반환.
a = 10
b = 3.14
c = "Python"
print(type(a)) # 출력: <class 'int'>
print(type(b)) # 출력: <class 'float'>
print(type(c)) # 출력: <class 'str'>
데이터 변환
- int(), float(), str(): 데이터를 각각 정수, 실수, 문자열로 변환
num_str = "100"
num_int = int(num_str)
print(num_int) # 출력: 100
num_float = float("3.14")
print(num_float) # 출력: 3.14
num = 50
print(str(num)) # 출력: "50"
4) 수학 연산
- sum(): 숫자 리스트나 튜플의 합계를 계산.
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # 출력: 15
- min(), max(): 최솟값과 최댓값 반환.
numbers = [3, 1, 4, 1, 5, 9]
print(min(numbers)) # 출력: 1
print(max(numbers)) # 출력: 9
- abs(): 절댓값 계산.
num = -10
print(abs(num)) # 출력: 10
- num = -10 print(abs(num)) # 출력: 10
- round(): 반올림.
pi = 3.14159
print(round(pi, 2)) # 출력: 3.14
5) 데이터 정렬
- sorted(): 데이터를 정렬한 새 리스트 반환.
numbers = [5, 3, 8, 6, 2]
print(sorted(numbers)) # 출력: [2, 3, 5, 6, 8]
print(sorted(numbers, reverse=True)) # 출력: [8, 6, 5, 3, 2]
내장 함수의 장점
- 사용 편의성:
- 별도의 정의나 임포트 없이 바로 사용 가능.
- 기본적인 작업을 간단히 수행할 수 있음.
- 안정성:
- Python에서 이미 정의되고 검증된 함수로, 성능과 정확성을 신뢰할 수 있음.
- 코드 가독성:
- 함수 이름만으로도 기능을 쉽게 이해할 수 있어, 코드가 명확하고 읽기 쉬움.
내장 함수 사용 시 주의사항
- 함수의 목적 이해:
- 각 함수가 어떤 입력값을 기대하고, 어떤 결과를 반환하는지 명확히 이해하고 사용해야 함.
- 과도한 사용 피하기:
- 내장 함수가 모든 문제를 해결할 수 있는 것은 아니며, 복잡한 로직이 필요한 경우 사용자 정의 함수를 고려.
- 예외 처리 필요:
- 잘못된 입력값으로 인해 예외가 발생할 수 있으므로, 입력값을 검증하거나 예외 처리를 포함해야 함.
'[Python 기초]' 카테고리의 다른 글
[Python-Library] Pandas 과 Pandas 관련 function 정리 (0) | 2024.11.26 |
---|---|
[Python] Error & Exception 정리 (0) | 2024.11.26 |
[Python] 제어문 (Control Statements) 정리 (1) | 2024.11.26 |
[Python] Data type 정리 (0) | 2024.11.26 |
[Python] SET 정리 (0) | 2024.11.26 |