일급객체
: OOP에서 사용되는 개념 중 하나로 아래의 조건을 만족하는 객체를 의미
1. 변수 혹은 데이터 구조(자료구조) 안에 담을 수 있어야 한다.
2. 매개변수로 전달할 수 있어야 한다.
3. 리턴값으로 사용될 수 있어야 한다.
→ 함수를 변수에 할당할 수 있고, 매개변수로 전달도 가능하며, 리턴 또한 가능
변수에 함수 담기
def func1(a, b): # 두 수를 더한 값을 리턴하는 func1 함수 선언
return a + b
f1 = func1 # f1이라는 변수에 func1 함수를 할당
print(func1)
print(f1) # func1함수와 f1의 메모리 주소를 출력, 같은 주소를 가리킴
print(f1 is func1) # is 함수로 비교
print(f1(1, 2))
print(func1(1, 2))
#함수 결과
<function func1 at 0x000001A568285D38>
<function func1 at 0x000001A568285D38>
True
3
3
자료구조에 할당
- 리스트에 할당
def add(a, b):
return a + b
def mins(a, b):
return a - b
calc = [add, mins]
for i in calc:
print(i(10, 5)) # 15와 5를 출력
- 예시) 배열에 람다식 넣어두고, 배열 불러올때 값 넣어주기
- move[0]일때 now 3 -> next=4
move=[lambda x:x+1, lambda x:x-1, lambda x:2*x]
for i in range(3):
next=move[i](now)
관련 문제: https://yygs321.tistory.com/328
- 딕셔너리에 할당
def add(a, b):
return a + b
def mins(a, b):
return a - b
calc = {
"add": add,
"mins": mins,
}
num1 = calc["add"](10, 5)
num2 = calc["mins"](10, 5)
print(num1) # 15
print(num2) # 5
- 매개변수로 함수 전달
def add(a, b):
return a + b
def add_manager(func, a, b): # 함수를 매개변수로 받음
print(func(a, b)) # 매개변수로 받은 함수를 통한 연산
add_manager(add, 1, 2) # 매개변수로 add함수를 전달하고 3을 출력하게 됨
- 함수를 리턴값으로 전달 가능 (또한 함수를 함수 내에서 선언이 가능)
def hello(name):
def printer(): # 함수 안에서 함수 선언
print(f"Hello {name}!") # print format 형식: f" {} " 구조
return printer # 리턴값으로 함수 반환
func = hello("Fox") # hello 리턴값이 함수이기 때문에 func도 함수
func() # 함수로 실행해줘야함
'코딩테스트 > Python 개념' 카테고리의 다른 글
| [Python] math.factorial (0) | 2023.03.29 |
|---|---|
| [Python] 리스트 값 한번에 출력하기 (0) | 2023.03.25 |
| [Python] yield 제너레이터 (함수 return 값 여러번에 나눠서 할때 ) (0) | 2023.03.19 |
| [Python] 튜플(tuple) (0) | 2023.03.05 |
| [Python] 입력 주의사항 (0) | 2023.03.03 |