Python/Python 중급

Python 파이썬 함수 기본값, 키워드 값, 가변인자

독학코딩 2022. 1. 12. 20:53
반응형

안녕하세요 독학코딩입니다. 오늘은 파이썬 함수 기본값, 키워드 값, 가변 인자에 대해서 배워보겠습니다. 지난 시간에 파이썬 함수의 기초에 대해서 배워봤으니 잘 모르시는 분들은 참고하시면 좋겠습니다.

 

 

Python 함수 선언, 호출, 전달값, 반환값

안녕하세요 독학 코딩입니다. 오늘은 파이썬에서 정말 중요한 함수의 선언과 호출에 대해서 배워보겠습니다. 함수는 쉽게 생각해서 원하는 기능을 쉽게 호출하기 위해서 만드는 거라고 생각하

stcodelab.com

 

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)

 

이렇게 하시면 됩니다. 위 예재처럼 더 복잡해지는데 굳이 왜 이렇게 하나 생각하실 수 있겠지만, 파이썬 함수의 가변인자는 함수에 받을 인자 자체가 가변적, 즉 언제 무엇이 어떻게 전달될지 알 수 없을 때 사용하는 것입니다. 그러니 복잡해지는게 맞습니다. 어떤 상황에도 함수가 정상 작동하여야 하니깐요.

반응형