1. 내장 함수(Built-in Functions)
파이썬 인터프리터에는 별도의
import없이 바로 사용할 수 있는 다양한 함수들이 준비되어 있다.
-
수치/논리 관련
abs(x)- 숫자의 절댓값 반환 (Absolute Value)
all(iterable)- 모든 요소가 참이거나 비어있으면
True
- 모든 요소가 참이거나 비어있으면
any(iterable)- 하나라도 참이면
True
- 하나라도 참이면
bin(x)- 정수를 2진수 문자열(
0b...)로 반환 (Binary)
- 정수를 2진수 문자열(
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()vssorted()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 104.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 105. 연산자 오버로딩
-
연산자 오버로딩(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: 달력 출력 및 관련 기능