함수 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 |