Python 파이썬 함수 기본값, 키워드 값, 가변인자
안녕하세요 독학코딩입니다. 오늘은 파이썬 함수 기본값, 키워드 값, 가변 인자에 대해서 배워보겠습니다. 지난 시간에 파이썬 함수의 기초에 대해서 배워봤으니 잘 모르시는 분들은 참고하시면 좋겠습니다.
Python 함수 기본값
def my_function(a, b=20):
print(a+b)
my_function(5)
위와 같이 def my_function(a, b=20)
함수를 선언할 때 인자에 b=20
같이 기본값을 설정해두시면 실제 함수를 호출할 때 b 인자 값을 넣지 않더라도 함수가 정상적으로 호출됩니다.
my_function(5, 10)
물론 이렇게 b
인자값을 설정하면 설정한 값으로 정상적으로 함수가 호출됩니다.
Python 함수 키워드 값
파이썬 함수의 키워드 값이라는 건 특별한 것은 아닙니다. 이전까지는 함수의 호출을 my_function(5, 10)
이런 식으로 했었는데, 함수에 들어가는 인자 값을 키워드에 맞게 설정할 수 있습니다.
my_function(b=10, a=5)
이렇게 함수를 호출할 때 a=5
, b=10
키워드에 맞게 인자값을 설정할 수 있습니다. 이 방법을 쓰시면 인자값을 넣는 순서에 상관없이 함수를 호출할 수 있습니다.
Python 함수 가변 인자
파이썬 함수의 가변 인자는 함수를 선언할 때 어떤 인자이든 넣을 수 있게 설정하는 방식입니다.
def my_function(*args, **kwargs):
print(args)
print(type(args))
print(kwargs)
print(type(kwargs))
my_function(2, 3, a=12, b=23, c="hello")
가변인자는 위와 같이 *args
, **kwargs
를 사용하면 설정이 가능합니다.
*args
args는 arguments로 키워드 없이 인자를 나열하여 함수에 전달할 수 있는 방식입니다.print(type(args))
하면 알 수 있지만 나열이 튜플로 전달됩니다.**kwargs
kwargs는 keyword arguments로 키워드와 함께 인자를 전달할 수 있는 방식입니다.print(type(kwargs))
하면 알지만 나열이 딕셔너리로 전달됩니다.
위 방식으로
def my_function(a, b):
print(a+b)
my_function(5, 10)
이것을 만들려면 아래와 같이 하는 방법이 있습니다.
def my_function(*args):
num = 0
for i in args:
num += i
print(num)
my_function(5, 10)
혹은
def my_function(**kwargs):
num = 0
for i in kwargs:
num += kwargs[i]
print(num)
my_function(a=5, b=10)
이렇게 하시면 됩니다. 위 예재처럼 더 복잡해지는데 굳이 왜 이렇게 하나 생각하실 수 있겠지만, 파이썬 함수의 가변인자는 함수에 받을 인자 자체가 가변적, 즉 언제 무엇이 어떻게 전달될지 알 수 없을 때 사용하는 것입니다. 그러니 복잡해지는게 맞습니다. 어떤 상황에도 함수가 정상 작동하여야 하니깐요.