함수에 인수를 순서대로 넣는 방식이다.
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)
가변 인수의 뒤에 정의될 수 있지만 가변 키워드 인수보단 앞에 위치해야 한다.