[이것이 코딩 테스트다] 파이썬 - 함수와 람다 표현식
함수
함수(Function)
: 특정한 작업을 하나의 단위로 묶어 놓은 것을 의미
: 함수를 사용함으로써 코드의 반복을 줄일 수 있다.
함수의 종류
- 내장 함수 : 파이썬이 기본적으로 제공하는 함수 ex) input, print ...
- 사용자 정의 함수 : 개발자가 직접 정의하여 사용할 수 있는 함수
함수 정의하기
- 매개변수 : 함수 내부에서 사용할 변수
- 반환 값 : 함수에서 처리된 결과를 반환
- 기본 형태
def 함수명 (매개변수) :
실행할 소스코드
return 반환 값
cf.) def = define의 약자 = 정의하겠다 라는 의미
cf.) 매개변수와 반환 값은 없을 수도 있다.
ex) 더하기 함수 예시
def add(a, b):
return a+b
print(add(3,7))
cf.) print(add(3, 7)) → 여기서 3, 7을 argument(인자값) 이라고 부른다.
파라미터 지정하기
: 파라미터의 변수를 직접 지정할 수 있다. (매개변수 순서가 달라도 상관X)
def add(a, b):
return a+b
print(add(b=2, a=9))
cf.) b=2는 add(a, b)에서 b에 들어가게 되고, a=9는 add(a, b)에서 a에 들어가게 된다.
global 키워드
: global 키워드로 변수를 지정하게 되면, 해당 함수에서는 지역 변수를 만들지 X, 함수 바깥에서 선언된 변수를 바로 참조하게 된다.
a = 0
def func():
global a
a+=1
for i in range(10):
func()
print(a)
cf.) 단순히 def 안에서 global 없이 print(a) 이런 식으로 출력만 할 경우에는 오류가 발생하지 않는다.
cf.) array = [1, 2, 3, 4] 일 경우에도, def 안에서 global 없이 array.append(6) 이런 식으로 호출하는 것도 오류가 발생하지 않는다.
cf.) 만약 def 안에 전역변수와 동일한 이름의 지역변수를 선언해주면 → def 안에서는 지역변수가 우선적으로 처리된다.
** 전역변수 vs 지역변수 차이점 알아두기!
여러 개의 반환 값
: 파이썬의 함수는 여러 개의 반환 값을 가질 수 있다.
: 여러 개의 반환 값들이 묶어서 한 꺼번에 반환되는 것 → packing 이라고 한다.
: 함수를 호출할 때 반환된 값들을 차례대로 특정 변수에 담는 것 → unpacking 이라고 한다.
def func(a,b):
add = a+b
sub = a-b
multiple = a*b
divide = a/b
return add, sub, multiple, divide
a, b, c, d = func(10, 5)
print(a, b, c, d)
cf.) add, sub, multiple, divide 한 결과는 차례대로 a, b, c, d 에 담기게 된다
람다 표현식 (lambda)
: 특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있다는 점이 특징
: 이름 없는 함수 라고도 불린다.
print((lambda a, b: a+b)(2, 5))
ex) 내장 함수에서 자주 사용되는 람다 함수
array = [('홍길동', 50), ('이순신', 20), ('김유신', 30)]
print(sorted(array, key=lambda x: x[1]))
: sorted 함수를 이용하여 정렬
: 정렬할 때에는 key가 x: x[1] 에 따라 정렬
: lambda 함수의 의미는 각각의 튜플들중 2번째 값을 선택한다는 의미
→ 결론: 리스트 내부 값들을 각 튜플의 2번째 값을 기준 오름차순으로 정렬하겠다.
ex) 여러 개의 리스트에 적용 (같은 규칙을 가진 함수 적용)
list1 = [1, 2, 3, 4, 5]
list2 = [6, 7, 8, 9, 0]
result = map(lambda a, b: a+b, list1, list2)
print(list(result))
cf.) map 함수 : 각각의 원소에 어떠한 함수를 적용시키고자 할 떄 사용한다.
: lambda a, b: a+b 함수를 list1 과 list2 에 적용시켜 result에 list 형식으로 출력한다.
: list1 과 list2 의 각 인덱스에 해당하는 값들은 a+b를 수행하게 되고, 해당 값들은 result로 담기게 된다.
'코딩테스트 > 이것이 코딩 테스트다' 카테고리의 다른 글
[이것이 코딩 테스트다] 그리디 알고리즘 (0) | 2022.09.28 |
---|---|
[이것이 코딩 테스트다] 파이썬 - 자주 사용되는 표준 라이브러리 (0) | 2022.07.22 |
[이것이 코딩 테스트다] 파이썬 - 반복문 (0) | 2022.07.22 |
[이것이 코딩 테스트다] 파이썬 - 조건문 (0) | 2022.07.22 |
[이것이 코딩 테스트다] 파이썬 - 기본 입출력 (0) | 2022.06.29 |
댓글