※모든 사진과 자료의 출처는 나동빈 [이것이 취업을 위한 코딩 테스트다] 입니다※
함수
함수란 특정한 작업을 하나의 단위로 묶어 놓은 것이다.
함수를 사용하면 불필요한 소스코드의 반복 줄일 수 있다.
함수의 종류
내장함수 : 파이썬이 기본적으로 제공하는 함수
사용자 정의 함수 : 개발자가 직접 정의하여 사용할 수 있는 함수
함수 정의하기
프로그램에는 똑같은 코드가 반복적으로 사용되어야 할 때가 많다.
함수를 사용하면 소스코드의 길이를 줄일 수 있다.
매개변수 : 함수 내부에서 사용할 변수 (입력할 때 사용한다.)
반환 값 : 함수에서 처리 된 결과를 반환 (return 키워드 함께
def 함수명(매개변수);
실행할 소스 코드
return 반환 값
def (define) : 정의하겠다는 의미.
매개변수와 반환 값은 존재하지 않을 수 있다.
더하기 함수 예시1)
def add(a, b); #함수를 정의한다.
#(a, b) : 매개변수(parameter) 내부적으로 전달받고자 하는 값 명시해 놓은 것
return a+b #a + b라는 값을 반환한다.
print( add(3, 7) ) #정의된 함수를 불러온다. 차례대로 매개변수에 인자값 넣어준다.
#(3, 7) : 인자(argument) 함수를 호출할 때 넣는 값
더하기 함수 예시2)
def add(a, b);
print( '함수의 결과:' a + b ) #함수 안에서 print()이용한다. return 없어도 된다.
add(3, 7) #(3, 7)을 인자로 넘겨준다
파라미터 지정하기
파라미터 변수(매개변수)를 직접 지정할 수 있다.
이 경우, 매개변수의 순서가 달라도 상관 없다.
def add(a, b);
print('함수의 결과: ', a + b)
add(b=3, a=7)
global 키워드
global 키워드로 변수를 지정하면 해당 함수에서는 지역 변수를 만들지 않고, 함수 바깥에 선언된 변수를 바로 참조하게 된다.
a = 0
def func();
global a #바깥쪽에 있는 a를 참조한다
a += 1
for i in range(10); #10번 반복한다
func()
print(a)
(출력) 10
↘ a = 0 초기값 선언해준다. 1출력
↘ global a 바깥에 있는 a 참조하겠다. 11출력
↘ 단순히 값을 참조, 출력하는 경우 아무것도 쓰지 않는다.
↘ 값을 더해서 출력하는 것도 된다.
↘ 전역 변수로 리스트 선언되어 있을 때, 내부 메서드 호출 가능하다.
↘ 전역 변수와 지역 변수가 동일한 이름으로 존재한다면, 내부적인 지역 변수 먼저 사용한다.
↘ 함수 안에서 출력될 때는 지역 변수 사용한다.
↘ 함수 바깥에서 출력될 때는 전역 변수 사용한다.
실제 코딩 테스트에서는 주로 전역 변수가 나온다. 그리고 이름이 같은 경우가 적다.
여러 개의 반환 값
파이썬에서는 단순하게 여러 개의 값을 리턴할 수 있다.
def operator(a, b):
add_var = a + b
subtract_var = a - b
multiply_var = a * b
divide_var = a / b
return add_var, subtract_var, multiply_var, divide_var #패킹 : 여러 개 값 한번에 반환하는 것이다.
a, b, c, d = operator(7, 3) #언패킹 : 차례대로 특정 값에 담는 것이다.
#더한 결과, 뺀 결과, 곱한 결과, 나눈 결과가 차례대로 a, b, c, d에 담기게 된다.
print(a, b, c, d)
람다 표현식
람다 표현식을 이용하면 함수를 간단하게 작성할 수 있다.
특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있다.
# 일반적인 add() 메서드 사용
def add(a, b):
return a + b
print(add(3, 7))
# 람다 표현식으로 구현한 add() 메서드
print((lambda a, b: a + b)(3, 7)) #이름 없는 함수이다.
함수 자체를 입력으로 받는 또다른 함수가 존재할 때, 함수의 기능이 간단할 경우 효과적이다.
람다 표현식 예시 : 내장 함수에서 자주 사용되는 람다 함수
array = [('홍길동', 50), ('이순신', 32), ('아무개', 74)] #리스트 함수 안 튜플 원소
def my_key(x):
return x[1] #2번째 원소를 기준으로 정렬 수행한다.
print(sorted(array, key=my_key)) #sorted 함수 : array리스트 정렬하되, 정렬기준은 key속성으로 한다.
print(sorted(array, key=lambda x: x[1])) #간단하게 한 줄로 작성한다.
람다 표현식 예시 : 여러 개의 리스트에 적용
list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8, 9, 10]
result = map( lambda a, b : a + b, list1, list2 ) #map : 각각의 원소에 어떠한 함수를 적용하고자 할 때 사용한다.
#lambda a, b: a+b 라는 함수를 정의한다.
#list1과 list2에 함수를 적용한다.
print( list(result) ) #순서에 맞는 원소끼리 더한 결과
'Python' 카테고리의 다른 글
이코테 : DFS/ BFS - 그래프 탐색 알고리즘 (Python) (0) | 2020.11.15 |
---|---|
이코테 : Python 문법 - 5. 실전에서 유용한 표준 라이브러리 (0) | 2020.11.11 |
이코테 : Python 문법 - 3. 조건문과 반복문 (0) | 2020.11.10 |
이코테 : Python 문법 -2. 입출력 (0) | 2020.11.10 |
이코테 : Python 문법 -1. 자료형 (수, 리스트, 문자열, 튜플, 사전, 집합) (0) | 2020.11.07 |