대니킴의 TEKnology

몰랐다면 반드시 알아야 할 - 파이썬 함수 인자 여러개 받기(1) 본문

언어 팁!/Python

몰랐다면 반드시 알아야 할 - 파이썬 함수 인자 여러개 받기(1)

TEKnology 2019. 7. 13. 23:20

파이썬 기초 문법을 배우셨다는 분들이라도 이 내용은 잘 모르시는 분들이 많으실 것 같네요. 바로 파이썬 함수에서 여러개의 정해지지 않은 개수의 인자를 받는 것 입니다. 이 내용을 알기 전과 알고 난 후 여러분의 코드에 엄청난 발전이 일어나실 수 있습니다ㅎㅎ

예시로 설명 드리겠습니다. 만약 여러분이 두 값을 더하는 함수를 만들고 싶다고 합시다. 그렇다면 코드는 보통 아래와 같이 쓰시겠죠?

def addTwoParams(a, b):
    return a + b

그런데 다시 세개의 값을 더하는 함수가 필요해 졌다고 가정해봅시다. 그렇다면 아래와 같이 작성하시겠죠.

def addThreeParams(a, b, c):
    return a + b + c

그런데 다시 네개의 값을 더하는 함수가 필요하다면 addFourParams(a, b, c, d) 함수를 만드실 건가요.... 너무 비효율적이죠. 그래서 파이썬에서는 이러한 문제점을 간단하게 해결해 주는 문법이 있습니다. 바로 인자에 asterisk을 붙여주는 것입니다. 

같은 더하기 함수로 보여드릴께요

# "*args"라는 인자는 정해지지 않은 수의 parameter를 tuple형 데이터타입으로 args라는 변수에 저장합니다
def adder(*args):
    return sum(args)
    
print(adder(1, 2, 3, 4))	# 10

이것이 어떻게 가능하냐하면! *args라는 이름의 parameter가 호출 시 argument로 받은 값들을 튜플형으로 저장하기 때문입니다. 아래 코드는 그 증거입니다.

def showArgs(*args):
    return args

print(showArgs(1, 2, 3, 4))		#(1, 2, 3, 4)

혹시 Functional Programming 과 친숙하신 분이시라면 이러한 기능이 오히려 자연스럽다고 느껴질 수도 있습니다 :) Haskell 과 같은 함수지향 언어에서는 컴퓨터에게 명령을 한다기 보다는 어떻게 하는 것인지 가르쳐 주죠. 똑같이 더하는 기능을 하는 함수를 여러개 만들 바에는 더하는게 무엇인지 알려주고 아무리 여러개의 인자가 와도 더할 수 있게끔 하죠. 저는 이 기능에서 그와 비슷한 느낌을 받았습니다. 같은 원리는 아니지만 ^^ 사용법이 비슷하다고 느끼시지 않나요?

다음 시간에는 더욱 진화된 버전의 여러 인자를 받는 법을 알아보겠습니다.

'언어 팁! > Python' 카테고리의 다른 글

__future__ 문은 무엇일까?  (0) 2019.08.03