본문 바로가기
Tech Stack/Python

함수

by jaeaemin 2021. 7. 26.
함수 def

 

파이썬 함수의 기본 구조 

def 함수명(매개변수) :
    < 함수 바디 >
    ....
    return 반환값

 

매개변수는 N개 이상 설정할 수 있고 결과값은 없거나 하나이다.

입력값이 없이 단순히 함수 자체를 call했을 때 특정한 행동을 하는 입력값 없는 함수도 만들어 사용할 수 있다. 이와 마찬가지로 결과값 없이 입력한 내용에 대해서 단순히 출력하거나 메시지를 나타내기 위해 결과값이 없는 함수도 만들어 사용할 수 있다. 이 둘을 합친 매개변수&결과값이 없는 단순한 함수도 사용가능하다.

 

 

 

함수 호출 시 인수를 지정하여 호출하는 것도 가능하다. 또한 함수 선언시에 매개변수를 초기화할 수 도 있다.

def add(a, b)
   return a + b

>>> result = add(a=3, b=7)
# a에 3, b에 7을 전달
>>> print(result)           
10



def add(a=3, b=7)
   return a + b

>>> result = add() 
# 인수를 함수에 넣어주지 않으면 초기화 시킨 값으로 자동 함수 실행
>>> print(result)           
10


 

함수의 매개변수가 어떤 상황에서는 작고 어떤 상황에서는 많은 가변적인 수가 될 때 함수를 어떻게 선언해야 할까

이 때 파이썬은 이런 문제를 해결하기 위해 *매개변수 방법을 제공한다. 

def 함수이름(*매개변수):
    <함수 바디>
    ....


(ex)

def add_num(*nums):  
    result = 0
    for i in nums:
         res = res + i
    return res

>>> result = add_many(1,2,3
>>> print(result)
6

>>> result = add_many(1,2,3,4,5,6,7,8,9,10)
>>> print(result)
55
       

 

 

kwargs (키워드 파라미터)

 

추가로 키워드 파라미터로 매개변수 앞에 별 2개(**)를 붙여서 입력값을 딕셔너리로 만들어 사용 할 수도 있다. 즉 매개변수를 통해 함수를 call하면 모든 매개변수가 key = value의 형태로 저장되어 결과값이 딕셔너리에 저장된다.

def print_kwargs(**kwargs):
    print(kwargs)

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

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

위의 예제에서 kwargs라는 매개변수에 딕셔너리 형태로 key에 변수이름이 value에 해당하는 값들이 저장된다.

 

 

함수의 return

 

함수의 결과값은 언제하나 하나이지만, 선언 시 return의 값을 n개로 설정해놓으면 한번의 함수 콜로 n개의 변수에 결과 값을 할당할 수 있다.

def plus_minus ( n1, n2 ):
    return n1+n2, n1-n2

>>> p , m = plus_minus(5, 2) 

이 때 할당시킬 변수를 한개로 주어지면 어떻게 될까? 예로

>>> res = plus_minus(5, 2) 
이때는 결과 값을 res라는 변수를 튜플 값 하나로 ( n1+n2 , n1-n2 )로 할당시킨다.

 

 

 

 

 

함수 lamda

함수를 생성하는 def와 비슷하지만 한 줄 짜리 함수를 만든다는 점에서 차이가 있다. 함수를 간결하게 표현하기 위해 자주 사용된다. 사용하는 방법은 lamda를 선언하고 매개변수 그리고 표현식으로 함수 바디를 작성한다.

lamda 매개변수 , 매개변수 : 표현식

더하기를 실행하는 lamda함수를 작성하면 아래와 같다.

lamda 예약어로 만든 함수를 return 문이 없어도 자동으로 함수의 결과를 반환한다는 점에서도 def와 차이가 있다.

>>> add = lambda a, b: a+b
>>> res = add(3, 7)
>>> print(res)
10

 

반응형

'Tech Stack > Python' 카테고리의 다른 글

입출력  (0) 2021.07.29
파일  (0) 2021.07.27
반복문 ( for , while )  (0) 2021.07.24
집합 & 불 자료형  (0) 2021.07.21
문자열 & 리스트  (0) 2021.07.20