파이썬 내장함수 일람 – Python 3.6.2 기준

파이썬 내장함수와 관련하여 간단하게 분류별로 나누고 정리해 보았다. 보다 자세한 사용법에 대해서는 파이썬 표준라이브러리 문서나 대화형쉘에서 help()를 이용해서 도움말을 얻도록 하자. 이 내장함수들은 하나 이상의 타입의 인자를 받을 수도 있고, 별도의 옵션 인자를 받기도 한다. 예를 들어 max() 함수는 max(a, b, c)와 같이 쓸 수도 있지만, max(aList)와 같이 연속열 1개를 인자로 받기도 하며, key= 파라미터를 줄 수도 있다. 본 글에서는 이런 세부 내용에 대해서는 따로 언급하지 않는다.

그외에 객체/모듈 조사 명령을 사용하여 내장 함수 목록을 뽑아내는 방법이 있는데, 이 부분은 글의 말미에서 추가로 소개하겠다.

updated : 파이썬 내장함수의 사용법을 일일이 적어 두는 것이 가독성도 좋지 못하고 별 필요가 없는 내용이라 판단되어, 내용은 간소화하고 분류별로 정리했습니다.

파이썬 표준 라이브러리

기본적으로 모든 내장 함수 및 표준 라이브러리 내 함수의 도움말은 표준 라이브러리 문서를 직접 참고하는 습관을 들여야 합니다.

내장함수 목록

다음은 파이썬의 내장함수 목록이다. 내장함수들은 __bulitins__라는 모듈에 정의되어 있다. 내장함수는 매우 기본이 되는 함수들이라 할 수 있지만, 모두 외울 필요는 없다. 자신이 자주 쓰게 되는 것들에 대해서는 자연스럽게 외우게 되어 있다. 사실 내장함수외에도 표준 라이브러리에는 엄청나게 많은 모듈과 함수들이 있으며, 이들은 외워서 쓰는 것이 아니라 대략적으로 알고 있다가 필요할 때 찾아보고 쓰는 편이 맞다. (그러니까 그런식으로 암기로 파이썬을 절대 공부하지 말 것) 또한 파이썬 표준 문서는 브라우저 북마크에 등록해두고 필요할 때마다 찾아봐야 한다.

산술 연산 함수

사칙연산 외의 산술 계산에 사용되는 함수들이다.

  • abs : 절대값을 구한다.
  • bin : 2진수로 변환한 문자열
  • oct : 8진수로 변환한 문자열
  • hex : 16진수로 변환한 문자열
  • pow : 거듭제곱을 계산한다. ** 연산자로 대체할 수 있다.
  • round : 반올림한다.
  • divmod : 몫과 나머지를 동시에 구한다. 낯익은 이름은 아니겠지만, 의외로 자주 쓰이기도 한다.
  • hash : 객체의 해시값을 구한다. 직접 사용하는 일은 매우 드물다.

여러 기본 타입/클래스의 생성자

여러 타입들의 생성자이다. 타입에 따라서 비어있는 인스턴스를 만들 수도 있고, 다른 타입의 값을 해당 타입의 값으로 변환할 수도 있다. 예를 들어 bool 타입은 불리언 대수(참/거짓)을 의미하는데, bool(1)True가 되고 bool(0)False가 되는 식이다. 그외에 list는 우리가 알고 있는 그 리스트가 맞고, list()라고만 하면 빈 리스트를 생성한다.

  • bool
  • bytearray
  • bytes
  • complex
  • dict
  • float
  • frozenset
  • int
  • list
  • memoryview
  • object
  • range : for 문에서 자주 쓰이는 그 range가 맞다. Python3에서 range는 일종의 반복자 타입으로 정의된다. (파이썬 2에서는 그냥 특정 구간을 채운 리스트를 생성하는 함수였음)
  • set
  • slice : 리스트의 부분열을 액세스할 때 aList[3:8]을 쓸 때 3:8에 해당하는 표기는 슬라이스 객체로 치환된다. 슬라이스는 연속열의 부분열을 만들기 위한 참조 영역을 표현하는 타입이다.
  • str
  • tuple
  • zip

런타임 관련

프로그램의 실행 중에 특정 텍스트를 받아서 컴파일하고 실행한다. 보안상의 문제로 사용하지 않을 것을 권장한다.

  • compile
  • eval
  • exec

연속열/반복 관련

연속열, 반복자, 생성자와 관련된 함수들이다. 대부분 매우 중요하다고 보면 된다.

  • all : 연속열의 모든 원소가 참인지 확인
  • any : 연속열 중 참인 원소가 1개라도 있는지 확인
  • enumerate : 연속열의 각 원소와 그 인덱스를 순차적으로 생성해내는 반복자 생성함수
  • filter : 필터함수를 적용하여 연속열의 원소를 걸러낸다.
  • iter : 연속열에 대해서 반복자를 생성한다. 직접 쓰이는 경우는 없고, for문이 내부적으로 이 함수를 사용한다.
  • len : 연속열의 길이를 구한다.
  • map : 연속열의 각 원소에 주어진 함수를 사상한다.
  • max : 연속열에서 최대값을 구한다.
  • min : 연속열에서 최소값을 구한다.
  • next : 반복자/생성자에게서 다음 원소를 요청한다.
  • reversed : 연속열의 역순인 사본을 생성한다.
  • sorted : 연속열의 정렬된 사본을 생성한다.
  • sum : 연속열의 각 원소들의 합계를 구한다.

문자열 및 IO 관련

  • ascii : 특정 객체를 표현하는 문자열을 아스키코드만 써서 표현한다. 영역외의 문자는 모두 이스케이프된다.
  • chr : 코드값(정수)으로부터 해당 코드가 가리키는 문자를 찾는다.
  • format : 미니포맷 언어를 사용하여 템플릿과 값을 조합한 문자열을 만든다. str.format()과 유사하다.
  • ord : chr의 반대동작. 문자를 주면 해당 문자의 코드값을 구한다.
  • repr : 주어진 객체의 표현 문구를 구한다. 보통 대화형쉘에서 객체 이름만 넣고 실행하면 나오는 값이 이 것이다.
  • input : 표준 입력으로부터 문자열을 한 줄 수신한다.
  • open : 파일을 열고 파일 핸들러를 리턴한다.
  • print : 문자열을 표준 출력으로 내보낸다.

기타 객체/모듈 조사용

특정 객체를 조사하는데 유용한 함수들이다. 실제로 자주 쓰일 일은 없겠지만, 알아두면 외부 모듈들을 사용하거나 디버깅하는데 큰 도움을 받을 수 있다.

  • help : 객체의 도움말을 표시한다.
  • callable : 객체가 실행가능한지 확인한다.
  • delattr : 객체에게 주어진 문자열로 된 이름의 속성이 있으면 그 속성을 제거한다.
  • dir : 객체의 모든 속성 이름들의 리스트를 반환한다.
  • getattr : 객체에게 주어진 문자열로된 이름의 속성을 구한다.
  • globals : 실행 위치에서 현재 모듈의 전역 변수 이름 공간의 사본을 구한다.
  • hasattr : 객체가 주어진 문자열로 된 이름의 속성이 있는지를 파악한다.
  • id : 객체의 고유 식별 값을 찾는다.
  • isinstance : 객체가 특정 클래스/타입의 인스턴스인지 확인한다. 예를 들어 isinstance(d, dict)d가 사전객체인지 확인한다.
  • issubclass : 클래스가 특정 클래스/타입의 서브 클래스인지 확인한다.
  • locals : 실행 위치의 지역 변수 이름 공간의 사본을 구한다.
  • setattr : 객체에게 주어진 문자열로 된 이름의 속성의 값을 세팅한다.
  • type : 객체의 타입을 조사한다. 해당 타입 이름(문자열)을 리턴한다.
  • vars : 주어진 모듈의 최상위 속성들을 리턴한다. 메인 모듈에서 실행하면 globals()와 동일한 동작이된다.

그외

  • classmethod : 클래스 메소드를 정의할 때 사용하는 데코레이터
  • static method : 정적 메소드를 정의할 때 사용하는 데코레이터
  • property : 클래스 내에 프로퍼티를 만들 때 사용하는 데코레이터
  • super : 클래스 내부에서 해당 클래스의 수퍼 클래스를 찾을 때 사용한다.
  • __import__ : 모듈을 임포트한다.

내장함수 목록 구하기

내장함수는 __builtins__ 모듈에 정의되어 있다고 했다. 그러하다면 위에서 살펴본 dir 함수를 이용해서 해당 모듈의 속성 이름을 모두 구할 수 있다. 하지만 실행해보면, 여기에는 모듈의 속성이 모두 나오는데다가, 기본 예외 클래스들도 다 정의가 되어 있기 때문에 함수가 아닌 것도 많다.

따라서 다음과 같이 필터링을 할 조건을 세워보자

  1. 대문자로 시작하는 것은 주로 예외 클래스들이다. 함수는 소문자로 시작한다.
  2. __로 시작하는 것은 일반적으로 내부적으로만 쓰려는 이름이다. 제외한다.
  3. 실행가능해야 한다. 즉, callable로 확인할 수 있어야 한다.

그런데 dir() 함수로 얻는 결과는 문자열의 리스트로, 속성들의 이름만 얻을 뿐이다. 어떻게 해당 이름의 속성이 실행가능한지 알 수 있을까? 이를 위해서는 특정한 객체의 속성을 이름만 가지고 액세스할 수 있어야 하는데, 그런 함수가 위에 있다. 바로 getattr()이다.

따라서 이 함수들을 이용해서 다음과 같이 내장 함수들의 목록을 구할 수 있다. 참고로 copyrightcredits는 내장함수는 아닌데 __builtins__에 끼어 있다. 이들은 제외한다.


def get_builin_funcs():
  names = dir(__builtins__) ## 1
  name_filter = lambda s: s[0].islower and not s.startswith('__') ## 2
  call_filter = lambda s: s not in ('copyright', 'credit') \
                          and callable(getattr(__builtins__, s))  ## 3

  ## 이 두 필터를 적용한 이름의 리스트
  filtered_names = filter(call_filter, filter(name_filter, names))
  

  ## 각 이름들을 함수로 바꾸어 리턴한다. 
  get_func = lambda s: getattr(__builtins__, s)
  return list(map(get_func, filtered_names))

이를 이용해서 각 내장 함수의 이름과 그 함수의 간이 도움말을 출력해보자. 모든 객체는 __name__, __doc__ 속성을 가지고 있는데 이들이 각각 이름과 간이 도움말에 해당한다.


funcs = get_builtin_funcs()
for f in funcs:
  print(f.__name__)
  print()
  print(f.__doc__)
  print()
  print("=" * 80)
  print()
  print()

실행해보면 각 함수의 이름과 설명을 순차적으로 출력해줄 것이다.

  • round(2.675, 3) 가 아니라 round(2.675, 2) 가 의도하신 것과 맞겠네요

    • 아 네 덕분에 바로잡았습니다. 감사합니다!