이번 절에서는 Add 클래스를 사용하여 계산을 해보았는데, [그림 12-1]의 왼쪽 코드를 썼습니다.
[그림 12-1]의 왼쪽 코드에서 알 수 있듯이 현재의 Add클래스는 인수를 리스트에 모아서 받고 결과는 튜플로 반환합니다. 그러나 오른쪽 그림처럼 리스트나 튜플을 거치지 않고 인수와 결과를 직접 주고 받는편이 훨씬 자연스럽습니다. 코드를 이와 같은 형태로 작성할 수 있게 해주는 것이 첫 번째 개선입니다.
그럼 첫 번째 개선에 도전해 봅시다. 그러려면 우선 Function클래스를 수정합니다. 이전 단계와 달라진 부분에는 음영을 넣었습니다.
우선 2부분부터 설명하겠습니다. outputs에 원소가 하나뿐이면 리스트가 아니라 그 원소만을 반환합니다. 다시 말해 함수의 반환값이 하나라면 해당 변수를 직접 돌려줍니다.
이어서 1부분입니다. 함수를 정의할 때 인수 앞에 별표(*)를 붙였습니다. 이렇게 하면 리스트를 사용하는 대신 임의 개수의 인수(가변 길이 인수)를 건내 함수를 호출할 수 있습니다. 가변 길이 인수의 사용법은 다음 예를 보면 명확해질 것입니다.
이 코드에서 알 수 있듯이 함수를 '정의'할 때 인수에 별표를 붙이면 호출할 때 넘긴 인수들을 별표를 붙인 인수 하나로 모아서 받을 수 있습니다. 이상의 변경 덕에 DeZero의 함수 클래스(Add 클래스)를 다음 코드처럼 사용할 수 있게 됩니다.
이것으로 Add 클래스 사용자들에게 더 자연스러운 사용법을 제공하게 되었군요. 지금까지가 첫 번째 개선이었습니다. 이어서 두 번째 개선으로 이동합니다.
댓글 없음:
댓글 쓰기