함수
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 |