입력이 들어오면 결과를 내보내는 것이 함수입니다.
어렸을 때 배웠던 y = 2x와 같은 수학적 함수도 함수입니다. x(입력)가 들어오면 y(결과)를 내보는 것은 동일합니다.
함수를 잘 사용하면 개발자에게 편리하고, 가독성을 높이고 유지보수를 편하게 해 줄 수 있도록 도와줍니다.
Python에서 함수는 def 키워드를 사용합니다. Javascript는 function을 사용합니다.
# 입력은 param
def func_name([param[=default]]):
# 수행
# 결과 반환
[retrun result]
입력과 결과는 있을 수도 있고 없을 수도 있습니다. 또한 입력값이 없어도 기본으로 값을 설정해 둘 수 있습니다.
default를 사용한 경우 해당 매개변수는 맨 뒤로 미뤄야 합니다. 그렇지 않으면 인수를 입력할 때 어떤 매개변수가 받았는지 알 수 없기 때문입니다.
입력은 상황에 따라 달라지는 경우 몇 개를 받아야 할지 모를 때가 있습니다. 상황에 따라 사용할 수 있는 방법들이 있습니다.
def func_name(*args):
# 수행
# 결과
return result
def func_name(**kwargs):
# 수행
# 결과
return result
*args으로 입력을 받게 되면 달라지는 것은 해당 매개변수의 타입이 tuple이라는 것입니다. 하지만 정확한 매개변수를 지정해주지 않는 경우 예외 처리를 잘해줘야 합니다.
**kwargs의 경우 매개변수 타입이 dictionary입니다. 이때는 key=value 형태로 값을 입력받아야 합니다.
Javascript에서도 인자를 여러 개 받는 방법이 있습니다. ...(spread operator)를 사용하면 됩니다.
function func(a,b, ...rest) {...} 이와 같이 사용하면 나머지 인수를 배열로 받을 수 있습니다.
result에는 둘 이상의 결과를 반환하는 경우도 있습니다. 이때 return rst1, rst2로 반환할 수 있습니다. 여기서 알아두어야 할 점은 해당 결과의 타입은 tuple이라는 점입니다.
인수로 리스트, 딕셔너리를 사용할 경우 변수 파트에서 학습했던 얕은 복사를 통해서 변수가 사용되기 때문에 원본이 변경될 수 있다 점을 주의해야 합니다.
익명 함수라고 이름이 없이 간단하게 함수를 만들어서 사용할 수 있는 방법이 있습니다. lambda 키워드를 활용하면 됩니다.
func_name = lambda prams: expression
추가적으로 함수를 설명할 수 있는 방법이 있습니다. 마치 Javascript에서 사용하는 JSDoc과 같은 역할입니다.
def func_name(a, b):
"""
description
Parameters:
a (types): desc
b (types): desc
Return:
type: desc
"""
return result
print(func_name.__doc__)
참고
'개발 > Python' 카테고리의 다른 글
| [Python] 기초 학습 - 클래스(1회차) (0) | 2025.10.14 |
|---|---|
| [Python] 기초 학습 - 입출력(1회차) (0) | 2025.10.13 |
| [Python] 기초 학습 - 제어문(1회차) (0) | 2025.09.29 |
| [Python] 기초 학습 - 자료형(1회차) (0) | 2025.09.25 |
| [Python] jupyter notebook 환경설정 (0) | 2025.09.23 |