728x90
함수 고급
- 튜플 - 함수와 함께 많이 사용되는 리스트와 비슷한 자료형으로, 한번 결정된 요소는 바꿀 수 없음
- 람다 - 간단하고 쉽게 함수를 선언하는 방법 - 주로 1회용 함수를 만들때 사용함
튜플
튜플은 리스트와 비슷한 자료형이다
튜플은 한번 결정된 요소(element)를 바꿀 수 없다
(데이터, 데이터, 데이터, ...)
tuple = (10,20,30)
tuple[0] --> 10
tuple[1] --> 20
tuple[2] --> 30
튜플은 리스트와 다르게 한번 정한 요소는 변경이 불가능하기 때문에 변경 시도 시 TypeError 예외가 발생한다
tuple[1] = 40
#TypeError occur
Traceback (most recent call last):
file "<pyshell#1>", line 1, in <module>
tuple_test[0] = 1
TypeError: 'tuple' object does not support item assignment
요소를 하나만 가지는 튜플 생성법
(273) -> X
[273] -> X
(273,) -> O #요소를 하나만 가지는 튜플은 요소 뒤에 쉼표(,)를 찍어줘야함
괄호 없는 튜플
파이썬의 튜플과 리스트는 1대1 대응(?) 방식으로 할당이 가능하다
[a,b] = [10,20]
(c,d) = (10,20)
print(a,b,c,d)
#result
10
20
10
20
튜플의 특이한 성질 덕분에 괄호를 생략해도 튜플로 인식할 수 있는 경우는 괄호를 생략 가능하다
tuple_test = 10,20,30,40
print(type(tuple_test))
print(tuple_test)
#result
<class 'tuple'>
(10,20,30,40)
괄호없는 튜플의 성질과 1대1 대응으로 할당이 가능한 성질을 활용한 변수 값 교환
a,b = 10,20
print(a,b)
a,b = b,a
print(a,b)
#result
10 20
20 10
튜플과 함수
튜플은 함수의 리턴에 많이 사용됨 (enumerate() 함수만 봐도 튜플로 반환됨)
함수 리턴에 튜플을 사용하면 여러개의 값을 리턴하고 할당할 수 있기 때문
def tuple_func():
return (10,20)
a,b = tuple_func()
print(a,b)
#result
10,20
튜플도 리스트와 같이 +/* 연산자를 사용할 수 있음
괄호 없이 여러 값을 할당할 수 있는 것은 오직 튜플로만 할 수 있는 일임
람다
기능을 매개변수로 전달하는 코드를 많이 사용하는 요즘을 위해 코드를 좀 더 효율적으로 작성할 수 있도록 파이썬은 람다(lambda)라는 기능을 제공함
함수의 매개변수로 함수 전달하기
- 콜백 함수(callback function) - 함수의 매개변수에 사용하는 함수
def print_hi():
print("hi")
def repeat_5_times(func):
for i in range(5):
func()
print(repeat_5_times(print_hello)) #매개변수로 print_hello()를 전달함
filter() & map()
함수를 매개변수로 사용하는 대표적인 Bulit-in Function으로 map(), filter()가 있음
- map(함수, 리스트) - 리스트의 요소를 함수에 넣고 리턴값으로 새로운 리스트를 구성해줌
- filter(함수, 리스트) - 리스트의 요소를 함수에 넣고 리턴 값이 true인 것으로 새로운 리스트를 구성해줌
def power(item):
return item**2
def under_3(item):
return item<3
list_input_a = [1,2,3,4,5]
output = map(power,list_input_a)
print("result of map function: ", list(output), output, sep=" ")
print()
output_b = filter(under_3,list_input_a)
print("result of filter function: ", list(output_b), output_b, sep=" ")
#result
result of map function: [1, 4, 9, 16, 25] <map object at 0x000002246680F2B0>
result of filter function: [1, 2] <filter object at 0x000002246680F2E0>
<map object>, <filter object>는 제너레이터(generator)라고 부른다.
람다의 개념
람다란 간단한 함수를 쉽게 선언하는 방법
lambda 매개변수 : 리턴해줘야 하는 매개변수를 사용하는 표현식
위 코드의 power()와 under_3()를 lambda로 선언하면 아래와 같이 된다
#power
lambda x : x**2
#under_3
lambda x : x<3
람다는 함수의 매개변수에 바로 넣을 수 있다
map(lambda x:x**2,list_input_a) #함수가 들어가는 인수 자리에 lambda를 넣은 것
728x90
'[파이썬]' 카테고리의 다른 글
[파이썬] 제너레이터와 yield 키워드 (0) | 2025.02.08 |
---|---|
[파이썬] 파이썬에서 파일 작업하기 (기초) (0) | 2025.02.08 |
[파이썬] recursion(재귀)와 메모화의 중요성 (0) | 2025.02.08 |
[파이썬] 파이썬 함수와 매개변수 (0) | 2025.02.08 |
[파이썬] for 반복, while 반복과 딕셔너리, 그리고 iterable & iterator (0) | 2025.02.06 |