Python — 위치 인수와 키워드 인수

이성보·2020년 10월 22일
0

python

목록 보기
1/7
post-thumbnail

위치 인수

함수에 인수를 순서대로 넣는 방식이다.

def func(x,y):
	pass

func(10,20)

언패킹

리스트나 튜플같은 반복 가능한 객체는 언패킹하여 인수를 넣을 수 있다. 이 때 *를 사용하여 인수로 지정하면 된다. 단, 정의된 인수의 갯수가 동일해야 한다.

def func(x,y,z):
    pass
    
a = [10,20,30]

func(*a)

가변 인수

위의 경우와 달리 함수를 정의할 때 인수의 갯수를 유연하게 처리할 수 있다. *를 사용해서 정의하며 인수의 이름은 자유롭게 사용할 수 있지만 관례적으로 arguments를 줄여서 args로 사용한다.

def func(*args):
    pass
    
func(10,20,30,40,50,60,70,80,90,100)
func(10)
func(1,2,3,4,5)

고정 인수와 가변 인수를 같이 사용할 때는 고정 인수가 먼저 정의되어야 한다.안 그러면 TypeError가 발생한다.

def func(name, *args):
    pass

키워드 인수

함수를 호출할 때 정의된 인수에 값을 할당하여 호출하는 방식이다.
키워드=값 형식으로 작성하며 인수의 순서에 상관없이 사용할 수 있다.

def func(name, age, gender):
    pass
    
func(name='messi', gender='man', age=33)

언패킹

키워드 인수 역시 언패킹하여 사용할 수 있다. 딕셔너리 객체를 언패킹한다. **를 사용한다.

def func(name, age, gender):
    pass
   
person = {'name':'messi', 'gender':'man', 'age':33}

func(**person)

가변 키워드 인수

함수를 정의할 때 인수의 갯수를 유연하게 처리할 수 있다. **을 사용해서 정의하며 인수의 이름은 자유롭게 사용할 수 있지만 관례적으로 keyword arguments를 줄여서 kwargs로 사용한다.

def func(**kwargs):
    pass
    
func(name='messi', gender='man', age=33, number=10)
func(name='son', gender='man')

고정 인수와 같이 사용될 때는 고정 인수가 먼저 정의되어야 한다.
안 그러면SyntaxError가 발생한다.
또, 가변 인수와 가변 키워드 인수를 같이 정의할 땐 가변 인수가 먼저 정의 되어야 한다. 안 그러면SyntaxError가 발생한다.

def func(name, *args, **kwargs):
    pass

기본값 지정

함수를 정의할 때 인수의 기본 값을 지정할 수 있다. 함수를 호출할 때 해당 인수를 지정하지 않으면 기본 값으로 처리된다.
일반 인수보다 뒤에 정의 되어야 한다. 안 그러면 SyntaxError가 발생한다.

def func(a,b,c,d=10):

func(40,30,20)
func(40,30,20,15)

가변 인수의 뒤에 정의될 수 있지만 가변 키워드 인수보단 앞에 위치해야 한다.

0개의 댓글