일급 ( 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
댓글을 사용할 수 없습니다.