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

파이썬 내장 모듈 builtins 완벽 이해하기

파이썬 builtins 모듈이란?

파이썬에서 builtins 모듈은 인터프리터가 시작될 때마다 자동으로 로드되는 특별한 모듈입니다. 최상위 실행 환경이든 대화형 세션이든 상관없이 항상 함께 시작되며, 별도의 임포트 없이 바로 사용할 수 있습니다.

이 모듈에는 파이썬의 핵심 요소들이 모두 정의되어 있습니다.

  • 모든 파이썬 객체의 기반이 되는 object 클래스
  • 숫자, 문자열, 리스트 등 모든 내장 데이터 타입 클래스
  • BaseException 클래스 및 모든 내장 예외
  • len(), print(), range() 같은 모든 내장 함수

암묵적 임포트 동작 방식

builtins 모듈은 현재 세션에 자동으로 임포트되기 때문에, 일반적으로 코드에서 명시적으로 임포트할 필요가 없습니다. 실행 코드에서 사용하는 모든 내장 함수는 기본적으로 builtins 모듈에 속한 것으로 간주됩니다.

예를 들어 다음 코드는:

>>> len('hello')
5

사실상 아래 코드와 암묵적으로 동일합니다.

>>> import builtins
>>> builtins.len('hello')
5

내장 함수와 이름 충돌 시 해결 방법

다만 내장 함수와 같은 이름의 사용자 정의 함수가 존재하는 경우에는 이야기가 달라집니다. 파이썬 인터프리터는 사용자 정의 함수에 더 높은 우선순위를 부여하기 때문에, 같은 이름의 두 함수가 공존하면 내장 함수를 호출할 때 반드시 builtins 모듈을 접두사로 붙여야 합니다.

def len(string):
print('로컬 len() 함수')
print('builtins 모듈의 len() 함수 호출')
import builtins
l = builtins.len(string)
print('길이:', l)

string = "Hello World"
len(string)

실행 결과:

로컬 len() 함수
builtins 모듈의 len() 함수 호출
길이: 11

위 예제처럼 사용자 정의 len() 함수가 내장 함수를 덮어쓰더라도, builtins.len() 형태로 호출하면 원래의 내장 기능을 그대로 사용할 수 있습니다.

__builtins__ 속성 확인하기

대부분의 모듈에는 __builtins__라는 이름이 전역 네임스페이스(globals)의 일부로 제공됩니다. 이 값은 일반적으로 builtins 모듈 자체이거나, 해당 모듈의 __dict__ 속성 값입니다.

>>> import math
>>> globals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'math': <module 'math' (built-in)>}

globals() 함수의 출력 결과에서 '__builtins__' 키를 확인할 수 있으며, 이를 통해 현재 실행 환경에 builtins 모듈이 어떻게 연결되어 있는지 살펴볼 수 있습니다.

정리

builtins 모듈은 파이썬 프로그램의 가장 근간이 되는 요소들을 담고 있는 핵심 모듈입니다. 평소에는 존재를 의식할 필요가 없지만, 내장 함수와 같은 이름의 함수를 정의해야 하거나 내장 환경을 깊이 이해하고 싶을 때 유용하게 활용할 수 있습니다.