Patrashu의 랩실/파이썬

파이썬 기본 내장 함수 — 완전정복 가이드(설명 + 예제)

Patrashu의 비밀창고 2025. 10. 11. 09:32

파이썬 기본 내장함수에는 여러가지가 있어요. 그 중 입문~초중급 복습용 함수입니다.
“시그니처 → 설명 → 예제 → 주의사항/팁” 순서로 빠르게 이해해볼게요!

시그니처를 모르신다면 아래 링크에 자세히 설명해놨답니다.

https://brotherweek111.tistory.com/24

 

파이썬 함수 시그니처(Signature) 완벽 이해하기

파이썬을 공부하다 보면 함수 설명에 이런 문장을 종종 보셨을 거예요print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) 이게 바로 함수의 시그니처(Signature) 입니다.처음 보면 어려워 보이지만,

brotherweek111.tistory.com

 

 

1) 입출력 & 타입 확인

✅ print()

한줄 요약: 값을 문자열로 바꿔 표준출력에 찍습니다.
시그니처: print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

  • objects: 출력할 값들(여러 개 가능)
  • sep: 값과 값 사이 구분자(기본 공백)
  • end: 마지막에 붙는 문자열(기본 새줄)
  • file: 출력 대상(기본 표준출력)
  • flush: 버퍼 강제 비움 여부
print("A", "B", 123)                # A B 123
print("2025-10-11", sep=" | ")      # sep은 값 사이에만 적용
print("progress", end="...done!\n") # 줄바꿈 대신 커스텀 엔딩

 

주의/팁

  • 디버깅 시 print(repr(obj))로 “있는 그대로”를 볼 수 있음.
  • 로그성 출력은 print() 대신 logging 모듈 권장(레벨/포맷/핸들러)

✅ input()

한줄 요약: 콘솔에서 한 줄을 문자열로 입력받습니다.
시그니처: input(prompt=None) → str

age_text = input("나이? ")  # 항상 문자열
age = int(age_text)         # 숫자 계산 전 형 변환 필수
print(age + 1)

 

주의/팁

  • EOFError 가능(파이프 입력 등). 안전하게 쓰려면 try/except 처리.
  • 숫자 → 반드시 int()/float()로 변환 후 사용.

✅ type()

한줄 요약: 객체의 실제 타입(클래스)을 돌려줍니다.
시그니처: type(obj) → type

print(type(10))       # <class 'int'>
print(type([1,2,3]))  # <class 'list'>

 

주의/팁

  • 타입 비교는 보통 isinstance(obj, SomeClass)가 더 적절합니다(상속 고려).

2) 형 변환

✅ int(), float(), str(), bool()

한줄 요약: 대표적인 기본 타입 변환기.
시그니처(대표):

  • int(x=0, base=10)
  • float(x=0.0)
  • str(obj='')
  • bool(x) (공집합/0/빈문자열/None → False, 나머지 True)
print(int("10"))         # 10
print(float("3.14"))     # 3.14
print(str(123))          # '123'
print(bool(0), bool("")) # False False

 

주의/팁

  • int("10.5")는 에러 → float("10.5") 후 int()로 자릿수 버림.
  • bool("0")는 True (빈 문자열만 False).

3) 숫자/집계 관련

✅ abs(), round(), pow()

한줄 요약: 절댓값/반올림/거듭제곱(모듈러 지원).
시그니처:

  • abs(x)
  • round(number[, ndigits])
  • pow(x, y[, mod])
print(abs(-7))              # 7
print(round(3.14159, 2))    # 3.14
print(round(2.5))           # 2  (은행가 반올림: ties to even)
print(pow(2, 5))            # 32
print(pow(3, 10, 7))        # 3**10 % 7 을 빠르게 계산

 

주의/팁

  • 반올림 규칙: 파이썬 3는 “짝수 쪽으로 묶음(은행가 반올림)”.
  • pow(a, b, mod)는 큰 수 모듈러 연산에 매우 효율적.

✅ min(), max(), sum()

한줄 요약: 최소/최대/합계.
시그니처:

  • min(iterable, *[, key]) 또는 min(a, b, c, ...)
  • max(iterable, *[, key])
  • sum(iterable, /, start=0)
scores = [88, 92, 75, 99]
print(min(scores))            # 75
print(max(scores))            # 99
print(sum(scores))            # 354
print(sum(scores, 10))        # 364 (초깃값 더하기)

 

4) 시퀀스/반복

✅ len()

한줄 요약: 컨테이너의 길이(개수).
시그니처: len(obj) → int

print(len("python"))      # 6
print(len([1,2,3,4]))     # 4
print(len({"a":1,"b":2})) # 2

 

주의/팁

  • 제너레이터에는 len() 불가(크기를 모름). 리스트로 변환해야 길이 측정 가능.

✅ range()

한줄 요약: 메모리 효율 좋은 정수 시퀀스(게으른 반복자).
시그니처: range(stop) / range(start, stop[, step])

print(list(range(5)))          # [0,1,2,3,4]
print(list(range(2, 7)))       # [2,3,4,5,6]
print(list(range(10, 0, -3)))  # [10, 7, 4, 1]

 

주의/팁

  • 실제 리스트가 아니라 필요할 때 생성되는 시퀀스. 매우 큰 범위도 메모리 안전.

✅ enumerate()

한줄 요약: 인덱스와 값을 함께 꺼내는 반복자.
시그니처: enumerate(iterable, start=0)

fruits = ["apple", "banana", "cherry"]
for i, f in enumerate(fruits, start=1):
    print(i, f)
# 1 apple / 2 banana / 3 cherry

 

주의/팁

  • 가장 짧은 이터러블 길이에 맞춰 잘립니다.
  • 길이 맞추려면 itertools.zip_longest() 사용.

5) 정렬

✅ sorted() (새 리스트 반환) / 리스트 메서드 list.sort() (원본 정렬)

한줄 요약: 파이썬 정렬은 안정적(stable), key=로 맞춤 정렬.
시그니처:

  • sorted(iterable, *, key=None, reverse=False)
  • list.sort(self, /, *, key=None, reverse=False)
nums = [5,1,4,2]
print(sorted(nums))                 # [1,2,4,5]  (원본 유지)
nums.sort(reverse=True)
print(nums)                         # [5,4,2,1]  (원본 변경)

words = ["Apple", "banana", "cherry"]
print(sorted(words, key=str.lower)) # 대소문자 무시 정렬

 

주의/팁

  • 복수 기준: key=lambda x: (x.score, x.name) 처럼 튜플 키로 다단계 정렬.
  • 시간복잡도 O(n log n), 내부 알고리즘은 Timsort.

6) 컬렉션 생성/검사

✅ list(), tuple(), set(), dict()

한줄 요약: 형 변환/새 컬렉션 만들기.
시그니처: 각 타입 생성자

print(list("abc"))                       # ['a','b','c']
print(tuple([1,2,3]))                    # (1,2,3)
print(set([1,1,2,3]))                    # {1,2,3}
print(dict([("a",1), ("b",2)]))          # {'a':1,'b':2}

# dict 컴프리헨션
squares = {x: x*x for x in range(5)}
print(squares)  # {0:0, 1:1, 2:4, 3:9, 4:16}

 

주의/팁

  • set은 중복 제거멤버십 테스트에 강력(평균 O(1)).
  • dict는 3.7+부터 삽입 순서 유지.

✅ any(), all()

한줄 요약: 이터러블의 논리합/논리곱.
시그니처: any(iterable) / all(iterable)

print(any([0, "", None, 3]))  # True (하나라도 참이면 True)
print(all([1, "hi", [0]]))    # True (모두 참으로 간주되면 True)
print(all([]), any([]))       # True False (공리 주의)

 

주의/팁

  • 빈 이터러블: all([]) → True, any([]) → False.

7) 함수형 툴

✅ map()

한줄 요약: 각 원소에 함수를 적용(게으른 평가).
시그니처: map(function, iterable, ...)

nums = [1, 2, 3, 4]
squared = list(map(lambda x: x*x, nums))
print(squared)  # [1,4,9,16]

주의/팁

  • 결과가 필요하면 보통 list()로 물리화.
  • 여러 이터러블을 동시에 받을 수 있음(함수 파라미터 수 일치).

✅ filter()

한줄 요약: 조건을 통과한 원소만 남깁니다(게으른 평가).
시그니처: filter(function, iterable)

nums = [1,2,3,4,5,6]
even = list(filter(lambda x: x % 2 == 0, nums))
print(even)  # [2,4,6]

주의/팁

  • function이 None이면 Truthy한 값만 남깁니다.
  • 가독성 측면에서는 리스트 컴프리헨션이 더 선호되기도 함.

✅ lambda

한줄 요약: 한 줄짜리 익명 함수.
시그니처: lambda 매개변수들: 표현식

inc = lambda x: x + 1
print(inc(3))  # 4

# 정렬 key로 자주 사용
pairs = [("alice", 30), ("bob", 25), ("carol", 27)]
print(sorted(pairs, key=lambda p: p[1]))  # 나이순

주의/팁

  • 여러 줄 로직/복잡한 처리 → def로 이름 있는 함수 정의 권장.

8) 문자열/컬렉션 유틸

✅ reversed()

한줄 요약: 역순 이터레이터를 반환(원본 불변).
시그니처: reversed(seq) (임의 접근 가능한 시퀀스에 적합)

print(list(reversed([1,2,3])))  # [3,2,1]
print("".join(reversed("abc"))) # "cba"

✅ ord() / chr()

한줄 요약: 문자 ↔ 유니코드 코드포인트 변환.
시그니처: ord(c) / chr(i)

print(ord('A'))  # 65
print(chr(65))   # 'A'

주의/팁

  • 이모지/한글 등도 유니코드 코드포인트를 가집니다.

✅ (참고) 문자열 정렬/검사 보조

sorted("string"): 문자 리스트로 정렬

print(sorted("Python"))  # ['P','h','n','o','t','y']

9) 객체/속성 조사

✅ isinstance()

한줄 요약: 인스턴스가 특정 타입(혹은 그 서브클래스)인지 검사.
시그니처: isinstance(obj, class_or_tuple)

print(isinstance(3.14, float))          # True
print(isinstance(True, (int, bool)))    # True (bool은 int의 서브클래스)

✅ dir()

한줄 요약: 객체가 가진 속성/메서드 목록(이름들)을 문자열로 반환.
시그니처: dir([object])

print(dir("hello"))    # 문자열이 가진 메서드들 확인

주의/팁

  • 디버깅/탐색에 유용. 구현 세부에 따라 “비공식” 항목도 포함될 수 있음.

✅ help()

한줄 요약: 대화형 도움말 시스템(문서 문자열, 시그니처, 예제).
시그니처: help([object])

# 대화형 셸/노트북에서:
# help(len)
# help(str.split)

 

🔒 보너스: 안전 변환 & 예외 처리 패턴

def to_int_safe(text, default=None):
    try:
        return int(text)
    except ValueError:
        try:
            return int(float(text))  # "10.5" → 10
        except ValueError:
            return default

print(to_int_safe("10"))     # 10
print(to_int_safe("10.5"))   # 10
print(to_int_safe("abc", 0)) # 0

포인트

  • 사용자 입력/파일 파싱 시 예외 안전성이 중요합니다.
  • 실패 시 기본값/로그를 남겨 파이프라인이 멈추지 않게 하세요.