[python] 변수 위치 인자 & 키워드 인자 (/, *)

alirz-pixel·2022년 9월 22일
0

python

목록 보기
2/5

변수 위치 인자

가변적인 위치 인자(positional argument)는 가변 인자(varages) 똔느 스타 인자(star args)라고 한다.

c++에서 사용하는 형태랑 많이 비슷하다 보면 된다.
단, 파이썬에서 사용 시에는 패킹된 상태로 전달된다.

def log(message, *values):
    if not values:
        print(message)
    else:
        values_str = ' '.join(str(x) for x in values)
        print(f"{message}: {values_str}")


log('안녕하세요')               # 안녕하세요
log('alirz', '안녕', '하세요')  # alirz: 안녕

키워드 인자

파이썬 함수에서는 모든 인자를 키워드를 사용해 넘길 수 있다. (keyword argument)
즉, 함수 호출 시 괄호 내에서 파라미터 이름을 대입 연산해 사용하면 된다.

def remainder(number, divisor):
	return number & divisor
    
remainder(number=10, 2)  #에러
remainder(10, divisor=2) #성공

**연산자

파이썬에서 함수 사용 시, **연산자는 딕셔너리에 들어있는 값을 함수에 전달하되, 각 값에 대응하는 키를 키워드로 사용하도록 한다.

kwargs = {
	'number': 20,
    'divisor': 10
}

remainder(**kwargs)

반대로 함수 정의시에도 **연산자를 사용할 수 있다.

def print_parameters(**kwargs):
	for key, val in kwargs.items():
    	print(f'{key} & {val}')

print_parameters(jihun=10, someone=5, another=7)

# jihun & 10
# someone & 5
# another & 7

키워드 인자를 사용하면 디폴트 값을 지정할 수 있으며, 코드 가독성을 높여줄 수 있다.

매개변수 표기

def foo(a, /, b, *, c):
	print(a, b, c)

/와 *의 의미는 아래와 같다

  • / - '/' 앞쪽(왼쪽)에는 positional argument만 올 수 있다.
  • * - *'의 뒷쪽(오른쪽)에는 keyword argument만 올 수있다.
  • /* 사이에는 positional argument와 keyword argument의 구분 없이 아무 형태나 올 수 있다.
foo(1, 2, 3)       # error. 세번째 인자는 keyword argument가 와야 한다.
foo(a=1, b=2, c=3) # error. 첫번째 인자는 positioal argument가 와야 한다.
foo(1, 2, c=3)     # ok
foo(1, b=2, c=3)   # ok
foo(1, b=2, 3)   # error. 세번째 인자는 keyword argument가 와야 한다.
출처: https://kukuta.tistory.com/316 [HardCore in Programming:티스토리]

0개의 댓글