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로 동작하는 것으로 이해하면 된다

반응형