일급 ( first-class ) 함수 / 클래스
글 작성자: nouu
일급 함수 클래스
함수/클래스를 비롯한 모든 대상이 객체이다.
런타임에 새로운 변수를 생성할 수 있듯 런타임에 새로운 함수/클래스를 생성할 수 있습니다.
함수/클래스를 변수에 할당하고, 인수로 사용하고, 함수 반환값으로 사용할 수 있습니다.
즉 인자로서 함수를 넘길 수 있고, 리턴값으로 함수를 리턴할 수 있습니다.
이러한 기능이 제공이 되면, 그 언어는 일급함수/클래스를 지원한다라고 말한다.
일급 함수 예제
def greeting(name):
return 'Hello ' + name
def call_function(fn, arg):
return fn(arg)
# 함수를 변수에 할당
say_hello = greeting
# 함수를 다른 함수의 인자로 전달
print(call_function(say_hello, 'Alice'))
# 함수에서 새로운 함수를 반환
def make_adder(x):
def adder(y):
return x + y
return adder
# 함수를 데이터 구조에 저장
functions = [say_hello, make_adder(5)]
print(functions[0]('Bob')) # 'Hello Bob'
print(functions[1](10)) # 15
일급 클래스 예제
class Greeter:
def __init__(self, name):
self.name = name
def greet(self):
return "Hello " + self.name
# 클래스를 변수에 할당
G = Greeter
# 클래스 인스턴스 생성
g = G("Alice")
print(g.greet()) # "Hello Alice"
# 클래스를 데이터 구조에 저장
classes = [Greeter, dict, list, set]
# 클래스 리스트에서 인스턴스 생성
instance = classes[0]("Bob")
print(instance.greet()) # "Hello Bob"
'개발언어 > Python' 카테고리의 다른 글
타입힌팅 (0) | 2023.11.05 |
---|---|
클로저 (Closure) (0) | 2023.11.05 |
python 아스키 코드 관련 함수 ord(), chr() 함수 (0) | 2022.02.22 |
python 이스케이프 시퀀스와 로우 스트링 (0) | 2022.02.22 |
python 주요 수치 연산 함수(abs(x), divmod(x, y), pow(x, y), math) (0) | 2022.02.20 |
댓글
이 글 공유하기
다른 글
-
타입힌팅
타입힌팅
2023.11.05 -
클로저 (Closure)
클로저 (Closure)
2023.11.05 -
python 아스키 코드 관련 함수 ord(), chr() 함수
python 아스키 코드 관련 함수 ord(), chr() 함수
2022.02.22 -
python 이스케이프 시퀀스와 로우 스트링
python 이스케이프 시퀀스와 로우 스트링
2022.02.22