Programming

; develop a program

Back-End/Python

[Python] 일급 (시민) 객체(first-class citizen)

Clloud_ 2022. 9. 25. 14:07
반응형

이번 포스팅에서는 파이썬의  일급 (시민) 객체(first-class citizen)에 대하여 공부를 해보고자 한다.

 


일급 (시민) 객체(first-class citizen)

일급 (시민) 객체는 OPP에서 사용되는 개념 중 하나를 말한다.
대입 연산자를 이용해 변수에 대입, 호출할 때 인수로 사용, 함수의 리턴 값으로 사용할 수 있다.

즉, 함수도 값으로 사용된다는 것이다.

 


함수를 변수에 대입하는 경우

함수를 정의한다.

def hello():
    print("안녕")

 

정의한 함수를 호출한다.

a = hello()
print(a)

 

[실행결과]

안녕
None

 

함수를 변수에 대입한다.

my_hello = hello 
my_hello()

your_hello = my_hello
your_hello()

 

[실행결과]

안녕
안녕
a = 함수( )인 경우 함수( )를 호출해서 그 반환 값을 a에 대입한다.
a = 함수인 경우 함수 객체를 변수 a에 대입한다. (함수에 a라는 이름을 추가. => 함수라는 이름과 a라는 이름 두 개로 호출할 수 있다.)

 


함수 호출할 때 인수(argument)로 사용하는 경우

함수를 정의한다.

def plus(n1, n2):
    result = n1 + n2
    print("더한 결과: ", result)

def minus(n1, n2):
    print("뺀 결과: ", n1 - n2)

def multiply(n1, n2):
    print("곱한 결과: ", n1 * n2)

 

처리할 로직은 있지만 처리할 때 사용할 값이 없는 경우에는 그 값을 매개변수로 받는다.

 


함수를 정의한다.

def calc(func):
    n1 = 10
    n2 = 20
    func(n1, n2)

 

처리할 값을 가지고 있지만 어떻게 처리할지 로직(알고리즘) 이 없는 경우 처리할 로직(함수)을 매개변수로 받는다.

 

정의한 함수를 호출한다.

calc(plus)

 

[실행결과]

더한 결과:  30
곱한 결과:  200
뺀 결과:    -10

 


함수를 반환(return) 값으로 사용하는 경우

함수를 정의한다.

def exam():

    def inner1():
        print(1)

    def inner2():
        print(2)

    return inner1, inner2

 

정의한 함수를 호출한다.

f1, f2 = exam()
f1()
f2()

 

[실행결과]

1
2

 


반응형