Function Parameters

NaHyun Kim·2020년 4월 21일
0

Function Parameters

<기본적인 형태>

위의 코드 처럼 순서대로 값이 parameter로 함수에 전해짐

Keyword Arguments

순서 대신에 parameter 이름으로 맞추어서 값을 전해줄 때

Keyword arguments 방식으로 parameter 값을 전해주면 실제 parameter 순서가 바뀌어도 괜찮음
parameter 순서에 맞추어 값을 함수에 넘기는 경우, 실수로 값이 바뀌어도 알기가 힘들다는 단점이 있는데 keyword arguments는 parameter 이름에 맞추어서 값을 함수에 넘기기 때문에 실수로 값이 바뀔 확률이 상대적으로 적다

Mixing positional arguments and keyword arguments

순서를 맞추어서 parameter 값을 전해주는 positional arguments와 keyword arguments를 혼용하여 사용하는것도 가능

**keyword arguments 는 순서가 바뀌어도 상관 없지만 positional arguments 부분은 순서를 지켜줘야 한다

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

> Traceback (most recent call last):
    File "python", line 1
SyntaxError: positional argument follows keyword argument

에러가 나는 이유는 keyword argument가 positional argument 보다 더 앞으로 위치되어 함수가 호출되었기 때문 Positional arguments 는 순서를 지켜주어야 하는데 순서가 틀렸기 때문에 에러가 나는것

Parameter Default Value

함수의 parameter에 default 값을 정의해 줄 수 도 있다. Default 값이 정의된 parameter는 함수가 호출될때 값이 넘겨지 않아도 괜찮다. 값이 넘겨지 않은 경우 default 값이 자동으로 넘겨지게 된다.

default 값이 정의된 parameter가 default 값이 정의 되지 않은 parameter 보다 먼저 위치해 있으면 안된다. 만일 default value parameter를 non-default value parameter 앞에 선언하면 syntax error가 남

Assignment

함수를 정의 할때 default value parameter를 non-default value parameter 앞에 정의 하면 안되는 이유

default argument 뒤에 non-default argument가 오도록 함수를 만들면 함수를 호출했을 때 문법에 에러가 발생한다. 왜냐하면 파라미터의 우선순위가 있는데 아래와 같이 함수를 만들고 name("아이유","ㅎㅎㅎ")으로 함수를 호출했을 때 positional argument에 이미 parameter가 지정되어 있고 first_name은 default arguments에 second_name, third_name은 non-default value parameter에 해당하므로 오류가 발생하게 된다.

def name(first_name ="정우성", second_name, third_name): 
   print(f"{first_name} and {second_name} and {third_name}") 

0개의 댓글