Parameter는 함수가 받는 변수 즉, 매개변수라고 하고 Argument는 함수에 실제로 들어가는 input value로 인자라고 한다.
위 사진에서 name
, age
, skill
은 매개변수이고 chetan
, 33
, python
은 각 매개변수에 대응되는 인자이다.
위 사진처럼 순서에 맞춰 parameter값을 전해주는 방법은 positional arguments라고 한다.
def introduction(name, age, gender) :
print(f"name: {name}, age: {age}, gender: {gender}")
introduction(name="John", age=13, gender="male")
# name: John, age: 13, gender: male
위와 같은 방법을 keyword arguments라고 한다.
사진속의 방법과 달리 순서가 바뀌어도 상관 없으며 가독성도 높아지는 장점이 있다.
두 방법을 섞어서 사용하는 것도 가능하다.
def introduction(name, age, gender) :
print(f"name: {name}, age: {age}, gender: {gender}")
introduction("John", age=13, gender="male")
# name: John, age: 13, gender: male
parameter에 기본값을 정의할 수도 있다.
default값이 정의된 parameter는 값이 넘겨지지 않아도 괜찮으며 이때 자동으로 default값을 사용한다.
다만, default 값이 정의된 parameter가 default 값이 정의 되지 않은 parameter보다 먼저 위치해 있으면 syntax error가 난다.
def introduction(name, age, gender="male") :
print(f"name: {name}, age: {age}, gender: {gender}")
introduction("John", age=13)
# name: John, age: 13, gender: male
parameter를 정의하는 순서 없이 무작위로 생성시 함수는 어떤 parameter에 어떤 값을 받아야할지 정할수 없기 때문이다
def example(a,b,c=None, r="w", d=[], *ae, **ab)
a,b : positional parameter
c = None : optional parameter
r = "w" : keyword parameter
d = [] : list parameter
*ae : keyword-only
**ab : var-keyword parameter