☆IT 개발 프로그램☆/Phthon

[파이썬] *args, **kwargs를 이용해 메소드 축약 작성하는 법

호기심을 품고사는 중 2020. 6. 4. 15:02

개요

*args와 **kwargs를 사용하면, 비슷한 특성을 가진 많은 인수(Argument)들을 함수로 넘겨줄때 유용하다. 먼저, 넘어오는 인수의 개수를 특정하지 않음으로써 상황에 따라 인수의 개수를 줄일수도, 늘릴수도 있다는 점이 장점이다. 또한, 인수가 너무 많으면 메소드의 가시성이 떨어지기 마련인데 이를 묶어서 배열처리 함으로 코드의 가시성이 좋아진다.

 


 

문법 (Syntax)

1.1 *args 파싱

# 메소드 정의
def method(*args):
    for i in args:
    	//처리
    
    
# 메소드 콜
method(arg1, arg2)
method(arg1, arg2, arg3, ..., argN)

메소드 정의 단계에서, 같은 특성을 가지는 argument들을 배열으로 받을 수 있도록 '*'을 붙여서 정의한다. 

 

다른 특성을 가진 인수와 *args을 분리해서 콜하고 싶다면, 아래와 같이 따로 정의한다. 단, *args는 인수 중 가장 마지막 순서에 와야한다. (total_price, *items)가 아니라 (*items, total_price)로 정의하면 오류가 발생한다.

 

 

사용 예시

# 메소드 정의
def method(price, *items):
    //처리
    
    
    
# 메소드 콜
method('5000원', '모자', '신발')
method('30000원', '모자', '신발', '팔찌', ..., '양말')

 

 


 

 

 

1.2 **kwargs 파싱

 

키워드 타입의 인수들도 같은 방식으로 넘겨줄 수 있는데, 이 때는 인수명 앞에 '**'를 붙인다. 

# 메소드 정의
def method(**kwargs):
    for k,v in kwargs.items():
    	# 처리
    
    
# 메소드 콜
method(key1=value1)
method(key1=value1, key2=value2, key3=value3, key4=value4)

 

 

 

사용 예시

 

예시 코드

 

# 메소드 정의
def kwargs_method(**kwargs):
    for key, value in kwargs.items():
        print ("key: %s , value: %s" % (key, value))

# 메소드 콜
kwargs_method(kim='0102', lee='0227', yoo='1009')

실행 결과