더북(TheBook)

파이썬 2의 키워드 전용 인수

불행하게도 파이썬 2에는 파이썬 3처럼 키워드 전용 인수를 지정하는 명시적 문법이 없다. 하지만 인수 리스트에 ** 연산자를 사용해 올바르지 않은 함수 호출을 할 때 TypeError를 일으키는 방법으로 같은 동작을 만들 수 있다. 가변 개수의 위치 인수 대신에 키워드 인수를 몇 개든 (심지어 정의하지 않았을 때조차도) 받을 수 있다는 점만 빼면 ** 연산자는 * 연산자와 비슷하다(Better way 18 “가변 위치 인수로 깔끔하게 보이게 하자” 참고).

# 파이썬 2

def print_args(*args, **kwargs):

print ‘Positional:‘, args

print ‘Keyword: ‘, kwargs

 

print_args(1, 2, foo='bar', stuff=’meep’)

 

>>>

Positional: (1, 2)

Keyword: {‘foo’: ‘bar’, ‘stuff’: ‘meep’}

 

파이썬 2에서는 safe_division**kwargs를 받게 만들어서 키워드 전용 인수를 받게 한다. 그런 다음 pop 메서드로 kwargs 딕셔너리에서 원하는 키워드 인수를 꺼낸다. 키가 없을 때의 기본값은 pop 메서드의 두번째 인수로 지정한다. 마지막으로 kwargs에 더는 남아 있는 키워드가 없음을 확인하여 호출하는 쪽에서 올바르지 않은 인수를 넘기지 않게 한다.

# 파이썬 2

def safe_division_d(number, divisor, **kwargs):

ignore_overflow = kwargs.pop(‘ignore_overflow’, False)

ignore_zero_div = kwargs.pop(‘ignore_zero_division’, False)

if kwargs:

raise TypeError(‘Unexpected **kwargs: %r’ % kwargs)

# ...

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.