글 작성자: 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"

 

댓글

댓글을 사용할 수 없습니다.