🕹 함수를 호출할때 인자의 값을 를 지정하지 않고 호출해도 이미 함수 매개변수에 명시되어 있는 상태이기 때문에 값을 넘겨 받지 않아도 된다.
def add(a=1, b=2):
return a + b
add()
🕹 하지만 함수를 호출할때 인자를 명시해 준다면 순서대로 값이 대입된다!(중요한 특성)
⚡️ 3 -> a
⚡️ 5 -> b
def add(a=1, b=2):
print(a)
print(b)
return a + b
add(3, 5)
🕹 기본적인 형태는 함수가 호출될때 인자값을 ⚡️순서대로 매개변수로 넘겨 받는다.
def add(a, b):
return a + b
add(1, 2)
⚡️1 -> a
⚡️2 -> b
🕹 함수를 호출할때 미리 인자와 매개변수를 ⚡️명확하게 정해서 넘겨주는 방법도 있다!
def (a, b):
print(a)
print(b)
return a + b
add(b =2, a = 1)
이렇게 순서에 상관없이 값을 넘길 수 있다! 또 가독성 또한 높아지기때문에 일석이조😚
만약에 ⚡️Positional Argument와 ⚡️Keyword Arguments를 함께 쓴다면...?
def add(a, b):
print(a)
print(b)
add(b=1, 2)
🕹 오류가 난다. 내용을 살펴보면 ->
⚡️Positional argument가 ⚡️keyword argument 뒤에 위치하기 때문이라고 되어있다.
🕹 Keyword Argument는 명확히 매개변수로 받을 인자값을 지정해주어서 순서에 상관없이 작성할 수 있지만 Positional argument는 순서를 꼭 지정해줘야 하기 때문에 에러가 난것이다.
def add(b=2, a):
return a + b
result = add(2)
print(result)
⚡️ Positional Argument 와 ⚡️ Default Arguments 를 함께 쓸때도 위와 같은 이유로 순서를 지켜주지 않는다면 오류가 발생한다!
🕹 Default Argument가 가진 특성때문에 매개변수 선언시 Default Arguments 를 앞에 NON-Default Argument 앞에 선언한다면 첫번째 인자가 첫번재 매게변수에 대입되려고 하는 특성때문에 오류가 발생한다!!
🕹 *args는 임의의 갯수의 ⚡️ Positional Argument 이다. 즉, 인자가 아무리 많더라도 *args 매개변수로 받을 수 있다는 것이다. 👍
🕹 *args 매개변수 선언되면 모든 인자들은 함수내부에서 tuple 형태로 처리된다.
def func_param_with_var_args(name, *args, age):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("args=",end=""), print(args)
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
def func_param_with_var_args(name, age, *args):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("args=",end=""), print(args)
func_param_with_var_args("정우성", 20, "01012341234", "seoul")
🕹 kwargs는 임의의 갯수의 ⚡️ keyword arguments이다. args와 마찬가지로 인자가 아무리 많더라도 모두 매개변수로 받을 수 있다.
🕹 args 와 다른점은 kwargs는 함수 내부에서 인자들을 dictionary(딕셔너리) 형태로 처리한다.
def func_param_with_kwargs(name, age, **kwargs, address=0):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")
def func_param_with_kwargs(name, age, address=0, **kwargs):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")
def mixed_params(age, name="아이유, *args, **kwargs):
print("age=",end=""), print(age)
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("kwargs=",end=""), print(kwargs)
mixed_params(20, "정우성", 'male', address="seoul", mobile="01012341234")
🕹 Positional Argument 가 제일 먼저 위치해야하고 그다음에 Keyword Argument, *args, **kwargs 순으로 인자를 받아야한다!!!
잘 설명해 주셔서 감사합니다!