본문 바로가기
python

args & kwargs

by csue 2021. 4. 27.

함수

function(함수) 는

 

input(parameter) ➡️ 함수 ➡️ output(return)

 

의 구조로 이루어져있다. 다만 input 과 output 은 optional 하여 존재하지 않을 수도 있다.

parameter 의 종류

positional arguments

*args 라고도 한다.
parameter 를 주는 가장 기본적인 형태로, parameter 값을 순서대로 함수에 전달한다.

>>> def name(job, stat):
        print(f"{job} has {stat}")

>>> name('pathfinder','dex')

pathfinder has dex

이 경우, 순서가 바뀌면 내용도 바뀌므로 수정할 때 어려움을 겪을 수도 있다.

>>> def name(job, stat):
        print(f"{job} has {stat}")

>>> name('dex', 'pathfinder')

dex has pathfinder

keyword Arguments

**kwargs 라고도 한다.

함수에 주어진 순서대로 값을 주는 것이 아니라, parameter 값의 형태로 전해주어 순서에 상관없이 input 값을 전달할 수 있다. 어떤 값이 넘어가는지 명확하게 보이기 때문에 수정하기도 용이하고 가독성 또한 높아진다.

>>> def name(job, stat):
        print(f"{job} has {stat}")
        print(f"{stat}")

>>> name(job='pathfinder', stat='dex')

pathfinder has dex

>>> name(stat='dex', job='pathfinder')

pathfinder has dex

mix args and kwargs

위의 두 가지를 혼용하여 사용할 수도 있다.
다만 주의할 점은 non-default value, default value, kwargs 의 순서를 지켜주어야 한다는 점이다. 이를 어기면 에러가 발생할 수 있다.

>>> def name(job, stat):
        print(f"{job} has {stat}")

>>> name('dex', job='pathfinder') # 이 경우 에러가 발생한다.
>>> name('pathfinder', stat='dex') 

pathfinder has dex # 제대로 작동한다.

default value

parameter 에 default 값을 정의할 수도 있다. 이때, default 값이 정의된 parameter 는 함수를 호출할 때 값을 넘기지 않아도 자동으로 출력된다. 단, default 값이 정의된 parameter 가 값을 정의하지 않은 parameter 보다 먼저 위치하면 안된다는 점이다.

>>> def name(job, stat='dex'): # (job='pathfinder', stat) 로 두면 에러가 발생한다.
        print(f"{job} has {stat}")

>>> name('pathfinder')

pathfinder has dex

'python' 카테고리의 다른 글

stack & queue  (0) 2021.04.27
array & tuple & set  (0) 2021.04.27
set  (0) 2021.04.27
dictionary  (0) 2021.04.27
list  (0) 2021.04.27