프로그래밍을 하다보면 종종 똑같은 코드를 여러번 써야 할 때가 있으셨을 겁니다.
혹시!! 그럴 때마다 똑같은 코드를 복붙해서 쓰진 않으셨나요? 그리고 이게 맞나...하는 의문이 들진 않으셨나요?
이런 의문을 풀기 위해 이번에는 함수와 관련된 포스팅을 쓰도록 하겠습니다.
특정 기능을 수행하는 재사용 가능한 코드 블록입니다. 모든 프로그래밍 언어의 필수적인 부분인 함수는 코드를 더 모듈화하고 재사용 가능하게 만들어 줍니다. 함수는 입력(인자), 처리(함수 내부의 코드), 출력(반환 값)의 형태를 가지며, 한 번 정의해 두면 필요할 때마다 반복해서 사용할 수 있습니다.
파이썬에서는 def
키워드로 함수를 정의하고, 함수 식별자(이름)를 괄호와 콜론과 함께 씁니다.
함수가 수행할 작업을 지정하려면 탭 또는 4개의 공백을 사용해 들여쓰기를 하고 다음과 같이 작성하며 기본형태는 아래와 같습니다.
def 함수이름():
# 함수가 수행할 작업
예시입니다.
def myfunction():
print("Hello World")
myfunction() # 출력 : "Hello World"
def subtractNum():
print(34 - 4)
subtractNum() # 출력: 30
함수를 더 유연하게 만들기 위해, 인자(arguments)와 파라미터(parameters)를 사용할 수 있습니다.
parameters : 함수를 정의할 때 괄호 안에 선언된 변수
arguments : 함수를 호출할 때 함수에 전달되는 실제 값
# a,b는 함수의 파라미터입니다.
def add(a,b):
return a + b
# 여기서 10과 20은 인자입니다.
result = add(10, 20)
print(result) # 출력: 30
위의 예시에서 add
함수는 a,b 파라미터를 가지며 함수를 호출할 때 두 개의 인자 10과 20을 전달합니다.
return
키워드함수에서 return 키워드를 사용하면, 함수를 호출한 곳으로 값을 반환할 수 있습니다. 이를 통해 함수의 결과를 변수에 저장하거나, 다른 함수의 입력으로 사용할 수 있습니다.
def multiply(num):
return num * 8
result = multiply(8)
print(result) # 출력: 64
이번엔 조금 더 어려운 개념인 함수의 가변 인자에 대해 설명드리겠습니다.
가변 인자는 함수에 임의의 수의 인자를 전달할 수 있게 하는 기능인데요, 이 덕분에 함수를 더 유연하게 설꼐할 수 있습니다.
가변 인자 리스트는 주로 두 가지 방식인*args
와 **kwargs
로 사용됩니다.
*args
는 함수에 넘겨진 위치 기반 인자들을 튜플로 묶어주는 역할을 합니다.
args는 관례적으로 사용되는 이름이지만, *
기호가 중요한 역할을 하며, 다른 이름을 사용할 수도 있습니다.
def calculate_average(*numbers):
total = sum(numbers) # 전달받은 모든 숫자의 합을 계산
count = len(numbers) # 전달받은 숫자의 개수
if count == 0:
return 0
reurn total / count
# 평균 계산 예시
print(calculate_average(10, 20, 30)) # 출력: 20.0
print(calculate_average(4, 5, 6, 7)) # 출력: 5.5
print(calculate_average()) # 출력: 0
**kwargs
사용하기**kwargs
는 함수에 넘겨진 키워드 인자들을 딕셔너리로 묶어주는 역할을 합니다.
여기서도 kwargs는 관례적으로 사용되는 이름이며, **
기호가 이 기능을 활성화합니다.
def create_profile(**userinfo):
profile = []
for key, value in userinfo.items():
profile.append(f"{key.capitalize()}: {value}")
return '\n'.join(profile)
# 사용자 프로필 생성 예시
profile_str = create_profile(name="주영", age=27, city="서울", hobby="낮잠")
print(profile_str)
# Name: 주영
# Age: 27
# City: 서울
# Hobby: 낮잠
그럼 안뇽!
https://www.freecodecamp.org/news/python-functions-define-and-call-a-function/