파이썬 - 가변 위치 인수로 깔끔하게 보이게 하자

이동욱

2021/06/01

Categories: 파이썬

BATTER WAY 18. 가변 위치 인수로 깔끔하게 보이게 하자

예제

def log(message, values):
  if not values:
  print(message)
  else:
    values_str = ', '.join(str(x) for x in values)
    print('%s : %s' % (message, values_str))

log('My number are', [1, 2])
log('Hi there', [])
def log(message, *values):
  if not values:
  print(message)
  else:
    values_str = ', '.join(str(x) for x in values)
    print('%s : %s' % (message, values_str))

log('My number are', [1, 2])
log('Hi there')

가변 개수의 인수를 받는 방법의 문제점

1. 가변 인수가 함수에 전달되기에 앞서, 항상 튜플로 변환된다는 점이다.

-> 함수를 호출하는 쪽에서 제네레이터를 사용하면, 결과로 만들어 지는 튜플의 개수가 많은 경우, 메모리를 많이 차지하여 프로그램이 죽을 수 있다.

2. 추후에 호출 코드를 변경하지 않고서는 새로운 위치에 인수를 추가할 수 없다는 점이다.

-> 새로운 위치에 인수를 추가할 경우, 호출하는 코드를 변경해줘야한다. 그렇지 않으면 버그가 발생한다.

핵심 정리

참고 문헌

>> Home