Devs/Python
[Python] *args, **kwargs 를 알아보자
whawoo
2025. 4. 3. 23:05
반응형
def add(*args):
def add(*args):
# tuple과 같이 인자가 넘어오므로 index로 아래처럼 사용할 수도 있다
print(args[1])
# 해당 형식으로 호출하는 경우 class 'tuple'로 반환되는 것을 볼 수 있다
#print(type(args))
sum = 0
for n in args:
sum += n
# 인자로 전해진 숫자의 합산 반환
return sum
# 인자를 가변으로 넣을 수 있다
print(add(3, 5, 6))
위와 같이 함수를 정의할 때 매개변수에 *args를 넣는 경우가 있는데 이러한 경우에는 해당 함수가 몇개의 인자라도 허용한다는 것을 의미한다고 한다
add(1, 5)
add(2, 4, 3, 7)
위와 같이 가변적으로 사용이 가능하다
kwargs라고 **를 붙여서 사용하는 경우가 있는데 가변 키워드 인수라고 하고 아래처럼 사용한다
# 앞에 있는 n = 2이고 뒤에 오는 add, multiply가 kwargs로 동작
def calculate(n, **kwargs):
# dictionary 타입 동작
print(type(kwargs))
# {'add':3, 'multiply': 5}
print(kwargs)
# add
# 3
# multiply
# 5
for key, value in kwargs.items():
print(key)
print(value)
# 3 (add라는 키가 없으면 error가 남)
print(kwargs["add"])
# 키가 있는지 체크해서 가져올 수 있음. 없어도 error 안 남
kwargs.get("add")
calculate(2, add=3, multiply=5)
args와 차이로 보면 key:value로 된 경우 kwargs이고 tuple형태로 된 경우 args로 동작하는 것으로 이해하면 된다
반응형