Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)의 일급 시민(First-Class Citizen) 완벽 이해하기

일급 시민(First-Class Citizen), 즉 일급 객체란 다른 개체들에 적용되는 모든 연산을 그대로 지원할 수 있는 개체를 의미합니다.

이러한 개체는 함수에 인수를 전달하거나, 함수에서 값을 반환하거나, 조건문에서 값을 수정하거나, 변수에 값을 할당하는 등의 상황에서 자주 활용됩니다.

이 글에서는 파이썬 3.x 및 이전 버전에서 일급 시민이 어떻게 구현되고 활용되는지 살펴보고, 어떤 개체들이 일급 시민으로 분류되는지도 함께 알아보겠습니다.

여기에는 변수함수가 모두 포함됩니다.

일급 시민에 해당하는 데이터 타입

먼저 파이썬에서 일급 시민으로 분류되는 기본 데이터 타입을 살펴보겠습니다.

  • 정수형(Integer)
  • 부동소수점형(Float)
  • 복소수(Complex Number)
  • 문자열(String)

위 네 가지 타입은 모두 파이썬 3.x 및 이전 버전에서 일급 시민으로 취급됩니다.

예제 코드

# 정수 선언
print("hello world")
int_inp = int(input())
print("This is a First class Citizen of " + str(type(int_inp)))
# 부동소수점 선언
float_inp = float(input())
print("This is a First class Citizen of " + str(type(float_inp)))
# 복소수 선언
complex_inp = complex(input())
print("This is a First class Citizen of " + str(type(complex_inp)))
# 문자열 선언
str_inp = input()
print("This is a First class Citizen of " + str(type(str_inp)))

입력

2
23.4
4+7j
tutorialspoint

출력

This is a First class Citizen of <class 'int'>
This is a First class Citizen of <class 'float'>
This is a First class Citizen of <class 'complex'>
This is a First class Citizen of <class 'str'>

함수도 일급 시민이다

이제 함수가 일급 시민으로 취급되는 경우를 살펴보겠습니다.

파이썬에서는 모든 일급 객체가 언어 차원에서 균일하게 처리됩니다. 객체지향 언어인 파이썬에서는 모든 개체가 기본 객체를 참조하며, 언제든지 참조(reference)와 역참조(dereference)가 가능합니다. 또한 자료 구조나 제어 구조를 통해 저장할 수도 있습니다.

그렇다면 파이썬이 일급 함수(first-class function)를 지원하는지 확인해 보겠습니다. 어떤 언어가 함수를 일급 객체로 취급한다면, 그 언어는 일급 함수를 지원한다고 할 수 있습니다.

예제 1: 함수를 객체처럼 다루기

# Python 프로그램
# 함수를 객체처럼 취급
def comp_name(text):
    return text.isupper()

print(comp_name("TUTORIALSPOINT"))
new_name = comp_name  # 함수를 객체로 참조
print(new_name("TutorialsPoint"))

출력

True
False

예제 2: 함수를 인수로 전달하기

# Python 프로그램
# 함수를 다른 함수의 인수로 전달
def new_inp(text):
    return text.upper()

def old_inp(text):
    return text.lower()

def display(func):
    # 함수를 일반 변수에 저장
    code = func("Love Coding, Learn everything on Tutorials Point")
    print(code)

display(new_inp)  # 함수를 인수로 직접 전달하여 참조
display(old_inp)

출력

LOVE CODING, LEARN EVERYTHING ON TUTORIALS POINT
love coding, learn everything on tutorials point

위 예제에서 확인할 수 있듯이, 파이썬의 함수는 객체로 참조할 수 있을 뿐만 아니라 다른 함수의 인수로도 전달할 수 있습니다. 이는 파이썬에서 함수가 일급 시민이며, 객체를 통해 자유롭게 참조하고 역참조할 수 있음을 명확하게 보여줍니다.

결론

이 글에서는 파이썬에서 일급 시민(First-Class Citizen)의 개념과 함께, 정수·실수·복소수·문자열 같은 기본 데이터 타입과 함수가 어떻게 일급 객체로 취급되는지 살펴보았습니다. 함수를 변수에 할당하고, 인수로 전달하고, 반환값으로 사용할 수 있다는 특징은 파이썬 프로그래밍의 유연성과 표현력을 크게 높여주는 핵심 요소입니다.