250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- __annotations__
- Database
- fnmatch
- locals()
- MySQL
- shutil
- glob
- fileinput
- 오버라이딩
- HTML
- shuffle()
- count()
- zipfile
- MySqlDB
- 파이썬
- CSS
- mro()
- __sub__
- __getitem__
- inplace()
- choice()
- __len__
- View
- randrange()
- JS
- decode()
- node.js
- discard()
- remove()
- items()
Archives
- Today
- Total
흰둥이는 코드를 짤 때 짖어 (왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!왈!)
(파이썬) Callback 함수와 Lambda 함수 본문
728x90
반응형
1. 콜백함수(Callback Function)
- 직접 호출하는 것이 아닌 다른 함수에 의해 호출되는 함수
In [5]:
def callback_func(func):
for i in range(5):
func()
def print_hello():
print('안녕하세요! 파이썬!')
In [3]:
print_hello()
안녕하세요! 파이썬!
In [6]:
callback_func(print_hello)
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
안녕하세요! 파이썬!
In [12]:
def callback_func(func, num):
for i in range(num):
func(i)
def print_hello(num):
print('안녕하세요! 파이썬!', num)
def print_hi(num):
print('하이! 파이썬!', num)
In [13]:
callback_func(print_hello, 3)
안녕하세요! 파이썬! 0
안녕하세요! 파이썬! 1
안녕하세요! 파이썬! 2
In [14]:
callback_func(print_hi, 5)
하이! 파이썬! 0
하이! 파이썬! 1
하이! 파이썬! 2
하이! 파이썬! 3
하이! 파이썬! 4
2. 람다 함수(Lambda Function)
- 단일문으로 표현되는 익명함수
- 코드상에서 한번만 사용되는 기능이 있을 때, 굳이 함수를 만들지 않고 일회성으로 만들어 사용(함수는 클래스를 통해 생성된 객체)
- return 형
In [16]:
def square(x):
return x ** 2
In [17]:
print(square(4))
16
In [18]:
lambda x: x ** 2
Out[18]:
<function __main__.<lambda>(x)>
In [19]:
square = lambda x: x ** 2
In [20]:
print(square(4))
16
In [21]:
print(square(5))
25
In [23]:
(lambda x: x ** 2)(4)
Out[23]:
16
In [24]:
def myData(string):
return len(string.strip())
In [25]:
print(myData('apple'))
5
In [26]:
print(myData(' apple '))
5
In [27]:
data = ['watermelon', ' apple ', ' banana', ' avocado ']
In [28]:
print(sorted(data))
[' apple ', ' banana', ' avocado ', 'watermelon']
In [29]:
print(sorted(data, key=myData))
[' apple ', ' banana', ' avocado ', 'watermelon']
In [31]:
# 람다 함수를 사용하여 위 예제를 변경
print(sorted(data, key=lambda string: len(string.strip())))
[' apple ', ' banana', ' avocado ', 'watermelon']
2-1. 람다가 유용하게 사용되는 대표적인 함수
In [36]:
# filter(): 특정 조건을 만족하는 요소만 남기고 필터링
li = [1, 2, 3, 4, 7, 9, 10, 14, 15, 19, 20]
# print(filter(lambda n: n%2 == 0, li))
result = list(filter(lambda n: n%2 == 0, li))
print(result)
[2, 4, 10, 14, 20]
In [38]:
def even(n):
if n % 2 == 0:
return True
else:
return False
In [42]:
result = list(filter(even, li))
print(result)
[2, 4, 10, 14, 20]
In [43]:
# map(): 각 원소를 주어진 수식에 따라 변형하여 새로운 값을 반환
li = [1, 2, 3, 4, 7, 9, 10, 14, 15, 19, 20]
per = list(map(lambda n: n * 0.01, li))
print(per)
[0.01, 0.02, 0.03, 0.04, 0.07, 0.09, 0.1, 0.14, 0.15, 0.19, 0.2]
In [44]:
def percent(n):
return n * 0.01
In [45]:
per = list(map(percent, li))
print(per)
[0.01, 0.02, 0.03, 0.04, 0.07, 0.09, 0.1, 0.14, 0.15, 0.19, 0.2]
728x90
반응형
'파이썬 기초' 카테고리의 다른 글
(파이썬) 객체지향과 클래스 (0) | 2023.03.09 |
---|---|
(파이썬) 랜덤 모듈 (0) | 2023.03.09 |
(파이썬) 변수의 범위 (0) | 2023.03.09 |
(파이썬) 사용자 정의 함수 (0) | 2023.03.08 |
(파이썬) 세트 (0) | 2023.03.08 |