TIL12 | Python Function Parameters

2021. 10. 10. 16:11언어/Python

반응형

Function Parameters - 1

Position Arguments

기본적인 방법으로 순서에 맞추어서 parameter 값을 전해주는 방법

position

def love_you(my_name, your_name): 
   print(f"{my_name} loves {your_name}") 

love_you('정우성', '아이유')

 

Keyword Arguments

parameter이름에 맞추어서 값을 전해주는 방법

Keyword arguments 방식으로 parameter 값을 전해주면 parameter순서가 바뀌어도 상관이 없다.

또한 이름에 맞추어서 값을 넘기기 때문에 가독성도 높아진다.

mixing

def love_you(my_name, your_name): 
   print(f"{my_name} loves {your_name}") 

love_you('정우성', your_name = '아이유')

 

Mixing positional arguments and keyword arguments

positional arguments 와 keyword arguments 를 혼용해서 사용할 수 있다.

다만, positional argument는 순서를 지켜줘야 하기 때문에 순서에 맞게 호출해야 한다.

keyword

def love_you(my_name, your_name): 
   print(f"{my_name} loves {your_name}") 

love_you(your_name = '아이유', my_name = '정우성')

아래의 코드처럼 함수를 호출하면 positional arguments의 순서가 틀렸기 때문에 syntax error가 난다.

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

SyntaxError가 나는 이유

SyntaxError: positional argument follows keyword argument

'정우성' 라는 인자가 파라미터 안의 2번째 인자로 속해있기 때문에 your_name으로 들어가게 된다. 하지만 your_name에는 이미 '아이유'라는 인자를 넣어주었기 때문에 my_name 파라미터의 값은 채워지지 않아 에러가 발생하게 된다.

 

Parameter Default Value

함수의 parameter에 default값을 정의해 줄 수 도 있다.

Default값이 정의된 parameter는 함수가 호출될 때 값을 넘기지 않으면 default 값이 자동으로 넘겨지게 된다.

default

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

love_you("정우성")

주의해야 할 점은 default값이 정의된 parameter는 항상 default값이 정의되지 않은 parameter 뒤에 선언해야 한다는 점이다.

만일 💡️ default value parameter를 non-default value parameter 앞에 선언하면 syntax error가 발생한다.

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

love_you("아이유")

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

 

반응형