‘파이썬 함수 사용법‘과 ‘파이썬 함수 특징‘을 정리하였습니다.
python 공식 문서에서 함수 (function)은 다음과 같이 설명하였습니다.
A series of statements which returns some value to a caller. It can also be passed zero or more arguments which may be used in the execution of the body. See also parameter, method, and the Function definitions section.
해석하자면 함수는 호출자에게 어떤 값을 반환하는 일련의 선언문 입니다.
또한 본문 실행에 사용될 수 있는 0개 이상의 인수를 전달할 수도 있다고 합니다.
함수의 정의와 사용법 특징에 대해 포스팅 시작하겠습니다.
함수 선언법
파이썬에서 함수는 다음과 같이 선언합니다.
def my_function(parameter1, parameter2):
# 함수 내용
def
키워드와 함수 이름, 매개변수 (있는 경우), 콜론(‘:’), 함수 본문을 사용하여 선언 합니다.
파이썬 함수의 특징은 아래와 같습니다.
파이썬 함수 특징 1. 일급 객체
아래 3가지 특징을 가진 것을 First class object (일급 객체)라고 합니다.
1. 변수에 할당 된다는 점
2. 다른 함수에 인수로 전달 된다는 점
3. 함수가 반환 된다는 점 입니다.
# 1. 함수를 변수로 할당
def greet(name):
return f"Hello, {name}!"
# greet 함수 뒤에 ()를 써서 호출하지 않고 함수 이름만 적어서 변수로 할당
my_greeting_function = greet
result = my_greeting_function("Alice")
print(result) # Hello, Alice!
# 2. 다른 함수에 인수로 전달
def add(x, y):
return x + y
def apply_operation(operation, a, b):
result = operation(a, b)
return result
# add라는 함수를 인자로 받음
result = apply_operation(add, 3, 4)
print(result) # Output: 7
# 3. 함수가 반환 됨
def create_multiplier(factor):
def multiplier(x):
return x * factor
# multiplier 이라는 함수를 반환 함 (호출이 아닌 반환이기에 함수명 뒤에 ()가 없음)
return multiplier
double = create_multiplier(2)
result = double(5)
print(result) # Output: 10
(3번 특징은 클로저 개념을 이해해야 정확히 이해할 수 있습니다. 클로저 포스트를 확인해 주세요.)
파이썬 함수 특징 2. 매개변수
함수는 함수에 값을 전달 받는 매개변수를 허용 합니다.
def greet(name):
print(f"Hello, {name}!")
greet("Alice") # "Alice"
파이썬 함수 특징 3. Return
'return'
문을 사용하여 값을 반환 할 수 있습니다. 함수에 'return'
문이 없다면 'None'
을 반환 합니다. 아래 코드에서 x, y가 매개변수 입니다.
def add(x, y):
return x + y
result = add(3, 4)
print(result) # 7
파이썬 함수의 특징 4. Default 매개변수
함수 매개변수에 디폴트 값이 있는 경우, 함수 호출 중에 해당 매개변수를 입력하지 않더라도 디폴트 값으로 함수에 인자를 전달 할 수 있습니다.
def power(base, exponent=2):
return base ** exponent
print(power(3)) # 9 (exponent 미 입력시, defaults인 2가 전달됨)
print(power(3, 3)) # 27 (exponent을 3으로 명시)
파이썬 함수의 특징 5. 가변 길이 인자
함수는 *args
및 **kwargs
구문을 사용하여 가변 개수의 인수를 허용할 수 있습니다. 이는 미리 매개변수를 정의하지 않더라도 상황에 따라 여러 인자를 입력 받을 때 사용할 수 있습니다.
*args
를 사용하면 함수가 위치 인자를 원하는 수만큼 허용할 수 있습니다.
**kwargs
를 사용하면 함수가 원하는 수의 키워드 인수를 허용할 수 있습니다.
def print_arguments(*args, **kwargs):
print("Positional arguments:", args)
print("Keyword arguments:", kwargs)
print_arguments(1, 2, 3, name="Alice", age=30)
파이썬 함수의 특징 6. 주석
재밌게도 파이썬을 처음 배울 때는 자료형을 명시하지 않는 것이 너무 좋았고 자동 형변환은 혁신이라고 생각했습니다.
하지만 프로젝트를 진행하면서 협업을 하고 코드의 길이가 길어지면서 자료형을 적지 않는 게 과연 정답일까? 라는 의문도 들기 시작했습니다…
코드가 길어지거나 다른 사람의 코드를 보면 이 변수가 어떤 자료형인지 몰라서 코드를 파악하는데 시간이 더 소요될 수 있기 때문입니다.
저 같은 불편함을 느끼는 사람이 조금 있었는지? 파이썬 함수에서는 자료형을 주석으로 달 수 있게 해주었습니다.
주석인 만큼 필수는 아니지만 사용하면 정말 좋습니다.
사용법은 아래와 같습니다.
파라미터의 자료형은 파라미터 옆에 ‘:’을 입력하고 주석을 달아줍니다.
반환값의 자료형은 함수의 괄호와 : 사이에 ‘-> 자료형‘으로 주석을 달아줄 수 있습니다.
def sum_two_numbers(a: int, b: int) -> int:
return a + b