- 파이썬에서의 함수 : 미리 정의되어 있는 특정 작업을 수행하는 코드 블록
함수는 필요할 때마다 이름을 호출하여 코드 실행
함수는 입력값(매개변수)을 받아 처리하고, 결과값을 반환
- 함수의 사용처
1. 반복되는 코드의 재사용
2. 코드의 모듈화 - 각 함수의 독립적 사용 / 디버깅과 테스트가 쉬워짐
3. 복잡한 작업의 분할
- 함수의 장점
1. 코드 재사용성
2. 코드 가독성
3. 유지보수 용이성
4. 테스트 및 디버깅 용이성
※ 함수 사용 시 주의사항
1. 함수는 가능한 하나의 작업만 수행하도록 설계
2. 입력값(매개변수)의 수를 적절히 유지
3. 이름과 기능을 명확히 표현해야 함
4. 부작용을 최소화해야 함
- 파이썬 내장 함수
1. print() 함수 : 다양한 값을 받아 출력 가능
내부에 함수가 있으면 내부 함수 먼저 연산 후 print 함수로 값을 전달함
2. input() 함수 : 사용자로부터 값을 입력받음
어떠한 입력도 문자열로 돌려주기 때문에 적절한 데이터 변환이 필요
3. len() 함수 : 문자열, 리스트 등의 길이를 구함
컬렉션 형태의 데이터에도 대부분 사용 가능
4. type() 함수 : 변수나 값의 데이터 타입을 반환함
데이터 타입 확인 시 유용함
type(5) # int
type(3.14) # float
type("beady") # str
type([1,2,3,4]) # list
type(print) # builtin_function_or_method
5. int(), float(), str() 함수 : 각각 정수, 실수, 문자열로 데이터 타입 변환 함수
6. sum() 함수 : 리스트나 튜플의 모든 요소 합 반환
7. min(), max() 함수 : 컬렉션에서 최소 or 최대값 반환
8. sorted() 함수 : 컬렉션 요소를 정렬해 새로운 리스트로 반환
number = [7, 2, 8, 6, 3]
sorted(number) # [2, 3, 6, 7, 8] (오름차순 정렬)
sorted(number, reverse=True) # [8, 7, 6, 3, 2] (내림차순 정렬)
number.sort()
number # [2, 3, 6, 7, 8] (number 자체의 요소 정렬)
9. abs() 함수 : 숫자의 절대값 반환
abs(-2) # 2
abs(-3.14) # 3.14
abs("-3.14") # error
abs(float("-3.14")) # 3.14
10. round() 함수 : 지정된 자릿수까지 반올림
- 내장 함수의 장점
1. 사용 편의성 - 이미 파이썬에 정의되어 있어서, 바로 사용이 가능
2. 안정성 - 이미 성능적으로 검증된 함수들
3. 코드 가독성 향상 - 명확하고 읽기 쉬워짐
- 함수 만들기
1. def : 파이썬에서 함수를 정의할 때 사용
함수 이름을 지정하고, 필요한 경우 매개변수 정의
필요한 작업 수행 후, 반환값 출력
def myfunction(first_number, second_number):
first_number %= 2
second_number %= 3
print(first_number + second_number)
return True
myfunction (4, 5)
# 2 (0 + 2)
# True
2. 매개변수 : 인수(arguments)를 처리하기 위해 사용하는 변수
매개변수는 함수를 정의할 때, arguments는 함수를 호출할 때 사용함
def add(a, b): # a와 b는 매개변수
return a + b
result = add(4, 8) # 4와 8은 인수(arguments)
print(result) # 12
3. 반환값 : 함수의 작업 완료 후, 호출된 위치로 돌려주는 값 / return 사용
def cube(n):
return n * n * n
cube(5) # 125
# cube 함수는 입력값 n의 세제곱을 계산하고, 그 결과를 반환함
복수 반환값 : 여러 값을 반환 / 반환값은 튜플로 반환됨
def cube(a, b):
return (a * a * a), (b * b * b)
cube(2, 3) # (8, 27) 튜플로 반환
반환값이 없는 함수 : return문을 생략하거나, 반환값 없이 return만 사용하면 None을 반환함
※ 함수는 입력값이 없을수도 있으며, 입/출력 값은 선택임
def test_function():
return
print(test_function()) # None
4. 기본값 : 함수 정의 시, 매개변수에 미리 지정된 값 / 인수가 전달되지 않으면, 기본값이 사용됨
def greet(name="beady"): # name 매개변수의 기본값으로 "beady"를 가짐
return f"안녕하세요, {name}님!"
print(greet()) # 안녕하세요, beady님!
print(greet("Alice")) # 안녕하세요, Alice님!
다중 기본값 : 함수는 여러 매개변수에 대해 기본값을 가짐 / 항상 기본값이 있는 매개변수가 없는 매개변수 뒤에 와야 함
def greet(age, name="beady"): # name 매개변수의 기본값으로 "beady"를 가짐
return f"안녕하세요, {name}님! {age}살 이시군요!"
print(greet(20)) # 안녕하세요, beady님! 20살이군요! (name 기본값 출력됨)
print(greet(20, "Alice")) # 안녕하세요, Alice님! 20살이군요!
5. 가변 매개변수 : 정해지지 않은 개수의 인수를 받을수 있게 함
- arg : 임의의 위치 인수들을 튜플 형태로 받음
def test_add(*args): # 가변 인수 *args를 통해 임의의 개수의 숫자를 받아 모두 더함
return sum(args)
test_add(1, 2, 3, 4) # 10
- kwargs : 키워드 인수들을 딕셔너리 형태로 받음
def test_greet(**kwargs):
print(kwargs)
test_greet(name = "beady", age = 30) # {'name': 'beady', 'age': 30}
※ *args와 **kwargs를 함께 사용 시, *args를 먼저 **kwargs를 나중에 정의해야 함
def test_greet(a, b, *args, **kwargs):
print(a, b)
print(args)
print(kwargs)
test_greet(10, 20, 30, 40, name = "beady", age = 30)
# 10 20 (a, b)
# (30, 40) (args)
# {'name': 'beady', 'age': 30} (kwargs)