매개변수와 인수
- 매개변수 : 함수에 입력된 값 받는 변수
- 인수 : 함수 호출 시 전달하는 입력값
(lambda 매개변수 : 리턴값)(인수)
def
로 만든 함수 vs 람다
함수
차이점 | def | 람다 함수 |
---|---|---|
코드 줄 수 | 여러 줄 | 1줄 |
함수 이름 | O | X |
매개변수 | 함수명 뒤 () 안에 쓰임 | lambda 바로 옆에 쓰고 : 작성 |
return 값 | 줄바꿈 후 return 명령어로 작성 | lambda 변수:이후에 리턴 값 바로 작성 |
주의 : 람다 표현식 안에서는 새 변수를 만들 수 없다!
- return 값 부분 : 변수 없이 식 한 줄로 표현해야 함.
- 단, 함수 바깥에 있는 변수 참조는 가능
map()
filter()
reduce()
1️⃣ map()
map(적용시킬 함수, 적용할 값들)
# 표현 방식
map(함수, 리스트 or 튜플)
map + 일반 함수
map()
를 list()
or tuple()
함수로 묶어서 사용list(map(second, two))
map + 람다 함수
list(map(lambda x : x * 2, two))
2️⃣ filter()
filter(함수, 리스트)
filter() + 일반 함수
list(filter(odd, two))
filter() + 람다 함수
list(filter(lambda x : x % 2 == 1, two))
코드를 더 줄이고 싶다면?
- 0은 Fale이고, 0을 제외하면 True인 파이썬의 자료형 참 거짓 활용
list(filter(lambda x : x % 2, two))
3️⃣ reduce()
from functools import reduce
reduce(함수, 이터러블 객체)
reduce() + 일반 함수
reduce(f, a)
reduce() + 람다 함수
reduce(lambda x, y : x * y, a)
a = [1, 2, 3, 4, 5]
객체(Object)는 속성(값)과 행동(함수)을 가지고 있는 대상
객체 지향 프로그래밍 vs 절차 지향 프로그래밍
3가지 조건 모두 만족해야 일급 객체!
- 변수에 할당하거나 데이터 구조(자료구조) 안에 그 객체를 담을 수 있다.
- 매개변수로 전달할 수 있다.
- 리턴값으로 사용될 수 있다.
예시로 확인해보기!
1번 : 변수에 할당하거나 데이터 구조 안에 함수를 담을 수 있다.
2번 : 매개변수로 함수를 전달할 수 있다.
map()', 'filter()', 'reduce()
를 통해 파이썬에서 함수가 매개변수로 전달 가능하다는 것을 배운 것!3번 : 함수를 리턴값으로 사용할 수 있다.
def 함수1():
def 함수2():
내용
return 함수2
호출 순서 정리
- func() 함수 호출 -> func = hello("AIFFEL") -> 따라서 hello("AIFFEL") 출력
- printer() 함수 -> hello(name)의 name에 들어온 인자 값 "AIFFEL"을 입력받음 -> "Hello AIFFEL!" 출력