EN KO

📦 기본

🏷️ 데이터 타입

int 정수: 42, -17, 0
float 실수: 3.14, -0.5
str 문자열: "hello", 'world'
bool 불리언: True, False
list 순서가 있는 가변 시퀀스: [1, 2, 3]
tuple 순서가 있는 불변 시퀀스: (1, 2, 3)
dict 키-값 쌍: {"a": 1, "b": 2}
set 중복 없는 집합: {1, 2, 3}
None Null/빈 값

연산자

+ - * / 산술 연산자
// 정수 나눗셈
% 나머지
** 거듭제곱
== != < > <= >= 비교 연산자
and or not 논리 연산자
in / not in 멤버십 연산자
is / is not 동일성 연산자

📝 문자열

🔤 문자열 메서드

s.upper() 대문자로 변환
s.lower() 소문자로 변환
s.strip() 앞뒤 공백 제거
s.split(sep) 문자열을 리스트로 분할
s.join(list) 리스트를 문자열로 합침
s.replace(old, new) 부분 문자열 교체
s.find(sub) 부분 문자열 인덱스 찾기 (없으면 -1)
s.startswith(pre) 접두사로 시작하는지 확인
s.endswith(suf) 접미사로 끝나는지 확인

문자열 포맷팅

f"Hello {name}" F-문자열 (권장)
f"{value:.2f}" 소수점 2자리로 포맷
f"{num:05d}" 5자리로 0 패딩
"{} {}".format(a, b) format 메서드
"%s %d" % (s, n) 기존 스타일 포맷팅

📋 컬렉션

📑 리스트 메서드

list.append(x) 끝에 항목 추가
list.extend(iter) 이터러블의 모든 항목 추가
list.insert(i, x) 인덱스에 항목 삽입
list.remove(x) x의 첫 번째 항목 제거
list.pop(i) 인덱스의 항목 제거 후 반환
list.sort() 리스트 정렬 (제자리)
list.reverse() 리스트 역순 (제자리)
list.index(x) 첫 번째 항목의 인덱스 찾기
list.count(x) x의 개수 세기
list[start:end:step] 리스트 슬라이싱

🔑 딕셔너리 메서드

d.keys() 모든 키 가져오기
d.values() 모든 값 가져오기
d.items() 모든 키-값 쌍 가져오기
d.get(key, default) 기본값과 함께 값 가져오기
d.pop(key) 값 제거 후 반환
d.update(dict2) 다른 딕셔너리 병합
d.setdefault(key, val) 키가 없으면 설정
key in d 키 존재 여부 확인
d | d2 딕셔너리 병합 (3.9+)

🔵 집합 연산

s.add(x) 요소 추가
s.remove(x) 요소 제거 (없으면 에러)
s.discard(x) 요소 제거 (에러 없음)
s1 | s2 합집합
s1 & s2 교집합
s1 - s2 차집합
s1 ^ s2 대칭 차집합

🔀 제어 흐름

조건문

if condition: if 문
elif condition: else if
else: else
x if cond else y 삼항 표현식
match value: case x: 패턴 매칭 (3.10+)

🔄 반복문

for x in iterable: For 루프
for i, x in enumerate(iter): 인덱스와 함께 루프
for k, v in dict.items(): 딕셔너리 키-값 루프
while condition: While 루프
break 즉시 루프 종료
continue 다음 반복으로 건너뛰기
else: break 없이 끝나면 실행
pass 아무것도 안 함 (플레이스홀더)

⚙️ 함수

📝 함수 정의

def func(args): 함수 정의
return value 함수에서 값 반환
def func(a, b=1): 기본 인자
*args 가변 위치 인자
**kwargs 가변 키워드 인자
lambda x: x * 2 익명 함수
@decorator 함수 데코레이터
def func(x: int) -> str: 타입 힌트

🛠️ 내장 함수

len(x) 시퀀스 길이 가져오기
range(start, stop, step) 숫자 시퀀스 생성
enumerate(iter) 인덱스와 값 쌍 가져오기
zip(iter1, iter2) 이터러블에서 항목 쌍 만들기
map(func, iter) 모든 항목에 함수 적용
filter(func, iter) 함수로 항목 필터링
sorted(iter, key=f) 정렬된 리스트 반환
reversed(iter) 역순 이터레이터 반환
sum(iter) 모든 숫자 합계
min(iter) / max(iter) 최소값/최대값 가져오기
any(iter) / all(iter) 하나라도/모두 참인지 확인
isinstance(obj, type) 객체 타입 확인
type(obj) 객체 타입 가져오기
print(*args, sep, end) 콘솔에 출력
input(prompt) 사용자 입력 읽기

🚀 고급

컴프리헨션

[x for x in iter] 리스트 컴프리헨션
[x for x in iter if cond] 조건부 리스트
[f(x) for x in iter] 변환이 있는 리스트
{x for x in iter} 집합 컴프리헨션
{k: v for k, v in iter} 딕셔너리 컴프리헨션
(x for x in iter) 제너레이터 표현식

📁 파일 입출력

open(f, "r") 읽기용으로 열기
open(f, "w") 쓰기용으로 열기 (덮어쓰기)
open(f, "a") 추가용으로 열기
open(f, "rb") 바이너리 읽기용 열기
with open(f) as file: 컨텍스트 매니저 (자동 닫기)
file.read() 파일 전체 읽기
file.readline() 한 줄 읽기
file.readlines() 모든 줄을 리스트로 읽기
file.write(s) 파일에 문자열 쓰기
file.writelines(list) 문자열 리스트 쓰기

⚠️ 예외 처리

try: / except: 예외 잡기
except Error as e: 특정 예외 잡기
except (E1, E2): 여러 예외 잡기
else: 예외 없으면 실행
finally: 항상 실행 (정리)
raise Exception(msg) 예외 발생
raise from e 예외 체인
assert condition 조건이 참인지 확인

💡 자주 쓰는 패턴

📝 코드 예제

# 조건부 리스트 컴프리헨션
evens = [x for x in range(10) if x % 2 == 0]

# 두 리스트로 딕셔너리 만들기
d = dict(zip(keys, values))

# 파일 줄 읽기
with open("file.txt") as f:
lines = f.readlines()

# map과 람다
doubled = list(map(lambda x: x * 2, numbers))

# 삼항 표현식
result = "예" if condition else "아니오"

# 값 언패킹
a, b, *rest = [1, 2, 3, 4, 5]

# 바다코끼리 연산자 (3.8+)
if (n := len(data)) > 10:
print(f"{n}개 항목을 받았습니다")

# 여러 파일 컨텍스트 매니저
with open("in.txt") as f1, open("out.txt", "w") as f2:
f2.write(f1.read())

🚀

  • python -m venv env로 가상 환경 생성
  • pip freeze > requirements.txt로 의존성 저장
  • if __name__ == "__main__":으로 스크립트 진입점 설정
  • 플랫폼 간 경로 처리에 pathlib 사용
  • 간단한 데이터 컨테이너에 dataclasses 사용 (3.7+)