Python Function Parameters errors

백승찬·2020년 10월 21일
0

python

목록 보기
1/10

def love_you(my_name = "정우성", your_name):
print(f"{my_name} loves {your_name}")

Traceback (most recent call last):
File "python", line 1
SyntaxError: non-default argument follows default argument

함수love_you의 매개변수에 키와 값이 같이 들어간 경우 문법적으로 유효하지 않다는 에러 나타남
함수를 호출할 때 파이썬 규칙으로는 default argument가 앞으로 먼저가고 뒤에 non-default argument가 와야함
왜냐하면 함수를 호출 할때 love_you(인자 입력, 인자 입력)을 해야하는 데 non-default argument 앞에 간 경우는 호출 할 경우 뒤에 인자를 입력할 수 없기 때문

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("정우성", 20, "01012341234", "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, 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" , address="seoul",mobile="01012341234")

age와 name 매개변수는 default인자로써 제일 앞에 위치하며 가변인자 같은 경우 뒤에 위치인자의 경우 이미 경로가 정해져 가변인자 뒤에 그리고 가변키워드인자를 위치시킴

0개의 댓글