1 minute read

함수는 모든 언어에서 쓰이고 있고 개념도 같으므로 파이썬에서 함수의 구조와 활용법에 대해서만 간단히 알아보자.

1. 함수의 구조

파이썬에서 함수는 def를 사용해서 만들 수 있다. def 함수명 : 을 선언하고 수행 문장을 작성하면 된다.

1
2
3
def func():
    print("Hello")
    print("World")



2. 여러개의 입력을 받는 함수

많은 양의 매개변수를 사용하는 함수가 있을 수 있다. 또는 입력 값이 몇 개가 입력될지 모를 때 매개변수 앞에 *를 붙여준다.
addNum의 인자로 1~10까지 10개의 수가 들어갔지만 *num 이라는 하나의 매개변수로 모두 받아서 num에 들어온 모든 수를 반환하는 함수의 예제이다.

1
2
3
4
5
6
7
8
def addNum(*num):
    result = 0
    for i in num:
        result = result+i
    return result

>>> addNum(1,2,3,4,5,6,7,8,9,10)
55



3. 키워드 매개변수

여러개의 입력을 받을 때는 매개변수 앞에 *을 붙여서 사용했다. 키워드 매개변수는 **을 사용한다.

1
2
3
4
5
6
7
8
def print_kwargs(**kwargs):
    print(kwargs)

>>> print_kwargs(a=1)
{'a':1}

>>> print_kwargs(name='foo', age=3)
{'age':3, 'name':'foo'}

위 예제를 보면 입력 값으로 ‘a=1’이 사용 됐을 때 {‘a’:1}로 반환되고 ‘name=”foo”, age=3’이 사용 됐을 때 {‘age’:3, ‘name’:’foo’}로 반환이 됐다. 이처럼 매개변수 앞에 **을 사용하면 매개변수는 딕셔너리가 되고 모든 key=value 형태의 입력 값이 그 딕셔너리에 저장된다는 것을 알 수 있다.



4. 함수의 리턴

함수의 리턴 값은 언제나 하나이다. 파이썬에서 리턴 값을 어떻게 받는지 알아보자.

1
2
3
4
5
6
def add_and_mul(a,b):
    return a+b, a*b

>>> result = add_and_mul(3,4)
>>> result
(7,12)

위 함수는 리턴 값을 2개 반환한다. 함수의 리턴 값은 하나여야 하는데 해당 함수를 호출하면 에러가 발생하지 않는다. 위와 같은 경우 리턴 값 a+b와 a*b를 튜플로 리턴하기 때문이다.

리턴 값을 튜플이 아닌 따로 받고 싶다면 아래와 같이 사용할 수 있다.

1
2
3
4
5
6
>>> result1, result2 = add_and_mul(3,4)
>>> result1
7

>>> result2
12



5. lambda 예약어

lambda는 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다. 보통 함수를 한줄로 간겨하레 만들 때 사용하거나 def를 사용할 수 없는 곳에 주로 쓰인다.

1
2
3
4
5
6
7
8
9
함수이름 = lambda 매개변수1, 매개변수2, ... : 표현식

>>> add = lambda a,b : a+b
>>> result = add(3,4)
>>> print(result)
7

>>> def add(a,b):
        return a+b

위 예제의 lambda를 사용한 함수와 def를 사용한 함수는 완전히 동일하다.