파이썬/파이썬(python) 중급

[27-2 파이썬] 기본값을 갖는 Keyword Arguments

Olivia-BlackCherry 2022. 9. 13. 17:17

함수 파라미터, 아규먼트에 관한 복습 ---->클릭

 

 

Positional Arguments

위치 인자

def my_function(a, b, c):
	pass
    
my_function(10, 1, 3)

a=10, b=1, c=3의 의미이다.

 

 

Keyword Arguments

키워드 인자

def my_function(a, b, c):
	pass
    
my_function(c=3, b=1, a=10)

a=10, b=1, c=3의 의미이다.

 

 

그런데 함수를 호출할 때마다, 매번 키워드 인자를 적는다면 번거롭다.

파이썬에서는 기본 값을 갖는 인수를 만들어서 이 문제를 해결한다.

함수 선언을 바꾸는 것이다.

 

 

Arguments with default values
def my_function(a=10, b=1, c=3):
	pass
    
my_function()

a=10, b=1, c=3의 의미이다.

 

함수를 만들 때 특정 값을 파라미터 값으로 입력한다. 

a, b, c 값은 기본값이고

함수를 호출했을 때 이 값들을 기본으로 사용한다는 뜻이다. 

또한 함수를 호출할 때 어떠한 인자도 적을 필요가 없다.

 

 

기본값 수정하기

만약 특정 값을 바꾸고 싶다면, 

함수를 호출할 때 그 값을 바꿔주면 된다.

def my_function(a=10, b=1, c=3):
	pass
    
my_function(b=4)

a=10, b=4, c=3의 의미이다.

 

 

 

write 메소드 인자는 5개의 입력을 받는다. 

self는 터틀 클래스와 관련되어 있고,

arg는 입력받을 값이고,

이 외에도 move, align, font가 있다. 

 

이 입력값들의 차이는 무엇일까?

아래의 코드는 arg의 입력값으로 hello를 적은 것이다. 

move, align, font는 쓰지 않았다.

하지만 코드는 에러없이 잘 돌아간다.

하지만 만약 arg 입력값도 없이,

t.write()라고 적으면 에러가 난다.

그 이유를 살펴보자.

 

write 메소드의 입력값 설명을 보면

arg:object, move:bool = ..., align:str= ..., font:tuple[str, int, str]=...

라고 적혀져있다.

arg 빼고는 모두 = 다음에 ...이 온다. 

... 의 뜻은 기본값이 있다는 뜻이다!

그 말은 즉, 기본값이 있기 때문에 

함수를 호출할 때 키워드 인자를 쓰지 않아도 된다는 의미와 같다.

 

단, 기본값이 없으면 인자의 입력값을 꼭 제공해야 한다.