가변 인자

On a regular basis·2021년 11월 8일
0

가변인자 -> *args / **kwargs

  1. 위치 가변 인자(*args)
    -> 임의의 개수의 인자를 받는 함수를 가리켜 가변 인자를 사용한다고 표현.
def f(x, *args):
	...

>>f(1,2,3,4,5) # 함수 호출

def f(x, *args):
	# x -> 1
    # args -> (2,3,4,5)
    # x로는 1만 받고 나머지 2,3,4,5는 가변인자에서 받아주는 것임.
  1. 키워드 가변 인자(**kwargs)
    -> 함수는 임의의 개수의 키워드 인자도 받을 수 있음.
def f(x, y, **kwargs):
	...

>> f(2, 3, flag=True, mode='fast', header='debug') # 함수 호출

def f(x, y, **kwargs):
	# x -> 2
    # y -> 3
    # kwargs -> {'flag' : True, 'mode' :'fast', 'header' : 'debug'}
    # 2랑 3을 각각 x랑 y가 받고 나머지 튜플을 kwargs 인 키워드 가변인자가 다 받아줌.
  1. 두가지 혼합
    함수는 임의의 개수의 가변 인자와 키워드 없는 인자들을 받을 수 있음.
def f(*args, **kwargs):
	...
    
>> f(2, 3, flag=True, mode='fast', header='debug') # 함수 호출

# 인자들은 위치 및 키워드 요소로도 분할됨!

def f(*args, **kwargs):
	# args = (2, 3)
    # kwargs = { 'flag': True, 'mode': 'fast', 'header': 'debug' }
    # 이 함수는 위치 또는 키워드 인자들의 어떤 조합이라도 받을 수 있음.
    # 레퍼를 작성하거나 인자를 다른 함수에 전달하고자 할 때 사용.
  1. 튜플과 딕셔너리 전달
    튜플을 가변 인자로 확장 가능!!
numbers = (2,3,4)
f(1, *numbers) # (=f(1,2,3,4)와 같은 의미)

options = {
	'color' : 'red',
    'delimiter' : ',',
    'width' : 400
    }
f(data, **options)
# f(data, color='red', delimiter=',', width=400)와 같음 -> **options에서 튜플을 받아줌.
profile
개발 기록

0개의 댓글