Parameters
는매개변수
로 python 언어에서 종류가 다양하며 순서에 맞지 않게 사용 하면 오류가 생길 수 있습니다.
매개변수의 순서로는
1. 위치인수 ex)name, age등
2. 가변인수 ex) * arg
3. 기본값인수 ex) name = "홍길동"
4. 키워드인수 ex) it_s_me(age=20, address="서울")
5. 가변 키워드 인수 ex) * * kwargs
def friend(name, age):
print(f"name: {name}, age: {age}")
friend("mina", 27)
def friend(name, age):
print(f"name: {name}, age: {age}")
friend(27,name = "mina")
순서를 다르게 하여 오류가 나왔다,
기본적으로 기본값매개변수는 일반매개변수 뒤에 나와야한다.
-수정 전-
def func_param_with_var_args(name, *args, age):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
TypeError: func_param_with_var_args() missing 1 required keyword-only argument: 'age'코드를 입력하세요
-수정 후-
def func_param_with_var_args(name, age, *args):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("정우성", "01012341234", "seoul", 20)
name=정우성
args=('seoul', 20)
age=01012341234
매개변수 순서가 잘못되어 age
와 *args
의 순서를 변경해 오류를 없앴다.
-수정 전-
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")
SyntaxError: invalid syntax
-수정 후-
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")
name=정우성
age=20
kwargs={'mobile': '01012341234'}
address=seoul
**kewords
인 가변키워드 인수는 가장 마지막 순서로 오게 된다.
-수정 전-
def mixed_params(name="아이유", *args, age, **kwargs, address):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
SyntaxError: invalid syntax
-수정 후-
def mixed_params(age, name="아이유", *args, address,**kwargs):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
name=정우성
args=('01012341234', 'male')
age=20
kwargs={'mobile': '01012341234'}
address=seoul
address같은 경우 키워드 인수이기 때문에 *args
인 가변인수뒤 **kewords
가변키워드 인수 앞으로 순서가 오게 됩니다.
자세히 보지 않으면 놓칠 수 있기 때문에 중요하게 기억하고 생각해야하는 부분이라고 생각한다.