1. 내장 함수(Built-in Functions)

파이썬 인터프리터에는 별도의 import 없이 바로 사용할 수 있는 다양한 함수들이 준비되어 있다.

  • 수치/논리 관련

    • abs(x)
      • 숫자의 절댓값 반환 (Absolute Value)
    • all(iterable)
      • 모든 요소가 참이거나 비어있으면 True
    • any(iterable)
      • 하나라도 참이면 True
    • bin(x)
      • 정수를 2진수 문자열(0b...)로 반환 (Binary)
    • eval(expression)
      • 문자열로 된 수식을 계산하여 실행
    • sum(iterable)
      • 리스트 등의 항목 합계를 반환
    • max(iterable), min(iterable)
      • 최댓값, 최솟값 반환
    • complex(real, imag)
      • 복소수 객체 생성 (Complex Number)
      • real + imag*i 형식의 복소수 반환
  • 자료구조/시퀀스 조작 관련

    • len(s)
      • 객체의 길이(항목 수) 반환 (Length)
    • list(iterable)
      • 리스트 생성
    • map(function, iterable)
      • 각 항목에 함수를 적용한 결과를 반환 (Mapping)
    • filter(function, iterable)
      • 조건(함수 결과가 참)을 만족하는 요소만 추출
    • zip(*iterables)
      • 여러 시퀀스의 동일 인덱스 항목들을 튜플로 묶어 반환
    • enumerate(iterable)
      • 인덱스와 값을 포함하는 열거형 객체 반환
    • sorted(iterable)
      • 정렬된 새로운 리스트를 반환 (원본 유지)
    • cf. reduce(func, seq)
      • func() 함수를 시퀀스 seq에 연속적으로 적용하여 단일 값을 반환
  • 기타

    • dir(object)
      • 객체가 가진 변수나 함수(속성) 목록을 보여줌

2. 정렬과 탐색(Sorting)

  • sort() vs sorted()

    • list.sort(): 리스트 자체를 정렬 (반환값 없음)
    • sorted(list): 정렬된 새로운 리스트 반환
  • Key 매개변수

    • 정렬 기준을 변경할 때 사용 (예: key=str.lower, key=lambda x: x[1])
  • 안정성(Stability)

    • 동일한 키 값을 가진 요소들의 원래 순서가 정렬 후에도 유지되는 특성

3. 람다식

  • 람다식(Lambda Expressions)
    • 이름 없이 몸체만 있는 익명 함수
    • 한 번만 사용되는 함수를 만들 때 유용
    • 문법: lambda 매개변수: 수식 (예: lambda x, y: x + y)
f = lambda x, y: x+y:
print('정수의 합: ', f(10, 20))
  • 활용
    • 콜백 함수(GUI 버튼 이벤트 등)
    • map(), filter(), reduce() 함수와 함께 데이터 처리 및 변환에 주로 사용
    • sorted()key 인자로 활용

4. 이터레이터와 제너레이터

4.1. 이터레이터

  • 이터러블 객체(Iterable)

    • for 루프 등에서 반복 가능한 객체 (리스트, 튜플 등)
  • 이터레이터(Iterator)

    • __iter__(): 이터레이터 객체 자신 반환
    • __next__(): 다음 값을 반환하며, 끝나면 StopIteration 예외 발생
class MyCounter(object):
	def __init__(self, low, high): # 생성자 메서드 정의
		self.current = low
		self.high = high
	
	def __iter__(self): # 이터레이터 객체로서 자신을 반환한다.
		return self
	
	def __next__(self):
		if self.current > 
 
	def __next__(self):
		if self.current > self.high: # current가 high보다 크면,
			raise StopIteration # StopIteration 예외를 발생
		else: # current가 high보다 작으면,
			self.current += 1 # 다음 값을
			return self.current - 1 # 반환
 
c = MyCounter(1, 10)
for i in c:
	print(i, end=' ')
 
# 실행 결과: 1 2 3 4 5 6 7 8 9 10

4.2. 제너레이터

  • 제너레이터(Generator)
    • 함수 내에서 yield 키워드를 사용하여 이터레이터를 생성하는 간편한 방법
    • 호출 시 값을 반환하고 상태를 기억했다가, 다음 호출 시 멈춘 곳부터 실행 재개
    • 메모리를 효율적으로 사용하며 코드가 간결함 (예: 피보나치 수열 생성)
def MyCounterGen(low, high):
	while low <= high:
		yield low
		low += 1
 
for i in MyCounterGen(1, 10):
	print(i, end=' ')
 
# 실행 결과: 1 2 3 4 5 6 7 8 9 10

5. 연산자 오버로딩

  • 연산자 오버로딩(Operator Overloading)

    • 표준 연산자(+, -, * 등)를 사용자 정의 클래스 객체에 대해 사용할 수 있도록 재정의하는 것
  • 구현: 클래스 내부에 특수 메소드(Magic Method)를 정의함

    • + : __add__(self, other)
    • - : __sub__(self, other)
    • < : __lt__(self, other)
    • ==: __eq__(self, other)
    • 문자열 표현: __str__(self)

6. 모듈

  • 모듈(Modules)

    • 함수, 변수, 클래스 등을 모아 놓은 파이썬 파일(.py)
    • 코드 재사용성과 관리 편의성을 높임
  • 사용법

    • import 모듈명: 모듈명.함수() 형태로 사용
    • from 모듈명 import 함수: 함수명만으로 직접 사용
    • as: 모듈에 별칭 부여 (import numpy as np)
  • if __name__ == "__main__":

    • 모듈이 직접 실행될 때만 코드를 실행하고, 다른 곳에서 임포트될 때는 실행되지 않도록 하는 구문
  • 주요 표준 모듈

    • copy: 객체 복사
      • 얕은 복사: 객체의 참조값만 복사
      • 깊은 복사: 객체까지 복사, copy.deepcopy(v)
    • random: 난수 생성
      • random.randint(**p, q): p~q 중의 하나를 랜덤하게 생성
      • random.random()*n: 0에서 n 사이의 난수를 반환
      • random.choice(): 주어진 시퀀스의 항목을 랜덤하게 반환
      • random.shuffle(): 리스트의 항목을 랜덤하게 섞음
      • random.randrange(**start, stop, step): range 구간으로부터 랜덤하게 요소를 생성
    • sys: 파이썬 인터프리터 정보 및 경로 제어 (sys.path, sys.argv)
    • time: 시간 관련 함수 (time(), sleep(), asctime() 등)
    • calendar: 달력 출력 및 관련 기능