치트시트

파이썬 치트시트: 문법, 명령어와 내장 함수를 표로 정리

업데이트: · Skillaria.Top

파이썬 문법은 중괄호 대신 들여쓰기로 블록을 구분하며, 블록은 콜론 뒤에서 네 칸 들여씁니다. 기본 요소는 자료형 선언 없는 변수, if/elif/else 조건문, for와 while 반복문, def 함수이며, print, len, range, input, type 같은 내장 함수와 문자열, 리스트, 딕셔너리 메서드를 함께 쓰면 일상적인 작업의 대부분을 처리할 수 있습니다.

이 파이썬 치트시트는 처음 몇 달 동안 가까이 두고 볼 내용을 한 페이지에 모았습니다. 문법, 반복문, 내장 함수, 문자열, 리스트, 딕셔너리 메서드, 터미널 명령어가 들어 있습니다. 각 표는 짧은 참조용이며, 예제는 REPL에 그대로 붙여 넣어 실행해 볼 수 있습니다.

파이썬 기본 문법

파이썬의 가장 큰 특징은 블록을 중괄호가 아니라 들여쓰기로 구분한다는 점입니다. 콜론으로 끝나는 줄(if, for, def, class) 다음 줄들은 네 칸 들여씁니다. 탭과 스페이스를 섞으면 IndentationError가 발생합니다.

구문예제설명
주석# 텍스트#부터 줄 끝까지는 무시됩니다
변수age = 25자료형을 선언하지 않으며, 값이 자료형을 정합니다
다중 대입a, b = 1, 2언패킹, 값 교환: a, b = b, a
출력print("안녕하세요", name)인자는 공백으로 구분됩니다
입력s = input("이름: ")항상 문자열을 반환합니다
f-문자열f"{name}: {price:.2f}"식을 넣고 서식을 지정합니다
타입 힌트count: int = 0IDE와 검사 도구를 위한 힌트이며, 실행 시에는 검사하지 않습니다
빈 블록pass문법상 본문이 필요한 곳의 자리 표시자
가져오기from math import sqrt모듈이나 모듈의 이름을 가져옵니다

자료형

자료형리터럴변경 가능
int42, 1_000_000아니요
float3.14, 1e-3아니요
boolTrue, False아니요
str"텍스트", '텍스트', """여러 줄"""아니요
list[1, 2, 3]예
tuple(1, 2), (1,)아니요
dict{"a": 1}예
set{1, 2}, 빈 집합은 set()예
NoneTypeNone—

연산자

분류연산자예제 → 결과
산술+ - * / // % **7 // 2 → 3, 7 % 2 → 1, 2 ** 10 → 1024
비교== != < > <= >=1 < x < 10 — 체이닝 비교
논리and or notx or "기본값"
소속in, not in"a" in "abc" → True
동일성is, is notx is None
대입+= -= *= /=, :=if (n := len(s)) > 10: ...

조건문과 패턴 매칭

if score >= 90:
    grade = "A"
elif score >= 70:
    grade = "B"
else:
    grade = "C"

status = "성인" if age >= 18 else "미성년자"   # 삼항 연산자

match command:
    case "start":
        print("시작")
    case "stop" | "exit":
        print("중지")
    case _:
        print("알 수 없는 명령")

거짓으로 취급되는 값은 False, None, 0, 빈 문자열, 빈 컬렉션입니다. 그래서 if len(items) > 0 대신 그냥 if items라고 씁니다.

파이썬 반복문: for와 while 문법

for 반복문

for 반복문의 문법은 for 변수 in 시퀀스:이며, 본문은 들여씁니다. 문자열, 리스트, 딕셔너리, 파일, range 등 순회할 수 있는 모든 객체를 돌 수 있습니다.

for i in range(5):              # 0 1 2 3 4
    print(i)

for i in range(10, 0, -2):      # 10 8 6 4 2
    print(i)

for i, fruit in enumerate(["사과", "배"], start=1):
    print(i, fruit)

for name, score in zip(names, scores):
    print(name, score)

for key, value in prices.items():
    print(key, value)

while 반복문

attempts = 3
while attempts > 0:
    password = input("비밀번호: ")
    if password == "secret":
        print("로그인 성공")
        break
    attempts -= 1
else:
    print("시도 횟수를 모두 사용했습니다")   # break 없이 끝났을 때 실행
명령동작
break반복문을 즉시 빠져나갑니다
continue다음 반복으로 넘어갑니다
반복문의 elsebreak 없이 끝났을 때 실행됩니다
range(stop), range(start, stop, step)숫자 시퀀스이며, stop은 포함되지 않습니다

컴프리헨션

squares = [x ** 2 for x in range(10)]
evens = [x for x in numbers if x % 2 == 0]
lengths = {word: len(word) for word in words}
unique = {c.lower() for c in text}
total = sum(x * x for x in range(100))   # 제너레이터 식

함수

def greet(name: str, greeting: str = "안녕하세요") -> str:
    """인사말을 반환합니다."""
    return f"{greeting}, {name}!"

def total(*args, **kwargs):
    return sum(args), kwargs

square = lambda x: x * x
print(greet("지민"))                  # 안녕하세요, 지민!
print(greet("지민", greeting="반가워"))  # 반가워, 지민!
요소의미
def f(a, b=1)기본값이 있는 매개변수
*args위치 인자를 개수에 상관없이 받습니다(튜플)
**kwargs이름 있는 인자를 개수에 상관없이 받습니다(딕셔너리)
return값을 반환합니다. 없으면 함수는 None을 반환합니다
lambda x: ...한 줄짜리 익명 함수
global, nonlocal바깥 범위의 변수를 바꿉니다

기본값으로 def f(items=[])처럼 변경 가능한 값을 쓰지 마세요. 리스트는 한 번만 만들어지고 호출 사이에 계속 쌓입니다. 올바른 방법은 items=None으로 두고 함수 안에서 if items is None: items = []를 쓰는 것입니다.

파이썬 내장 함수

파이썬 내장 함수는 import 없이 바로 쓸 수 있습니다. 거의 모든 스크립트에 등장하는 기본 함수들입니다.

함수동작예제 → 결과
print()값을 출력합니다print(1, 2, sep="-") → 1-2
input()키보드에서 문자열을 읽습니다int(input())
len()컬렉션이나 문자열의 길이len("abc") → 3
type()객체의 타입type(3.0) → <class 'float'>
isinstance()타입 확인isinstance(5, int) → True
int() float() str() bool()타입 변환int("42") → 42
list() tuple() set() dict()컬렉션 만들기list("ab") → ['a', 'b']
range()숫자 범위list(range(3)) → [0, 1, 2]
enumerate()(인덱스, 원소) 쌍list(enumerate("ab")) → [(0, 'a'), (1, 'b')]
zip()시퀀스를 짝지어 묶습니다list(zip([1, 2], "ab")) → [(1, 'a'), (2, 'b')]
sum() min() max()합계, 최솟값, 최댓값max([3, 7, 1]) → 7
abs() round()절댓값과 반올림round(3.14159, 2) → 3.14
sorted()정렬된 새 리스트sorted(words, key=len, reverse=True)
reversed()역순 이터레이터list(reversed([1, 2])) → [2, 1]
map() filter()함수 적용 / 걸러 내기list(map(str, [1, 2])) → ['1', '2']
any() all()하나라도 참 / 모두 참all(x > 0 for x in nums)
open()파일 열기open("a.txt", encoding="utf-8")
help() dir()도움말과 속성 목록help(str.split), dir(list)
id() hash()객체의 식별자와 해시hash("a")

언제나 곁에 두기 좋은 파이썬 레퍼런스는 REPL의 help() 함수입니다. help(dict)는 딕셔너리의 모든 메서드를 설명과 함께 보여 주고, dir(obj)는 객체가 가진 이름 목록을 보여 줍니다.

문자열 메서드

파이썬 문자열의 문법상 특징은 문자열이 변경 불가능하다는 것입니다. 모든 메서드는 새 문자열을 반환합니다. 슬라이스는 리스트와 같은 방식으로 씁니다. s[1:4], 뒤집기는 s[::-1]입니다.

메서드예제 → 결과
upper() lower()"Py".upper() → 'PY'
capitalize() title()"hello world".title() → 'Hello World'
strip() lstrip() rstrip()" hi \n".strip() → 'hi'
split(sep)"a,b,c".split(",") → ['a', 'b', 'c']
join(iterable)"-".join(["a", "b"]) → 'a-b'
replace(old, new)"cat".replace("c", "b") → 'bat'
find() index()"hello".find("l") → 2, 없으면 -1 (index는 오류)
count()"banana".count("a") → 3
startswith() endswith()"file.py".endswith(".py") → True
isdigit() isalpha() isspace()"123".isdigit() → True
removeprefix() removesuffix()"test_a".removeprefix("test_") → 'a'
zfill() center() ljust()"7".zfill(3) → '007'
format()"{} + {}".format(1, 2) → '1 + 2'

리스트 명령

리스트는 변경 가능한 순서 있는 컬렉션입니다. 대부분의 메서드는 리스트를 제자리에서 바꾸고 None을 반환합니다. 그래서 a = a.sort()는 흔한 실수입니다.

연산동작예제
append(x)끝에 추가합니다a.append(4)
extend(iter)모든 원소를 추가합니다a.extend([5, 6])
insert(i, x)인덱스 위치에 넣습니다a.insert(0, "first")
remove(x)값이 처음 나오는 곳을 삭제합니다a.remove(3)
pop(i)원소를 삭제하고 반환합니다(기본값은 마지막)last = a.pop()
clear()리스트를 비웁니다a.clear()
index(x)처음 나오는 위치의 인덱스a.index("b")
count(x)나오는 횟수a.count(1)
sort()제자리에서 정렬합니다a.sort(key=str.lower)
reverse()제자리에서 뒤집습니다a.reverse()
copy()얕은 복사b = a.copy()
del a[i]인덱스나 슬라이스로 삭제del a[1:3]
슬라이스a[start:stop:step]a[-1]은 마지막, a[:3]은 처음 세 개

딕셔너리 명령

연산동작예제
d[key]키의 값, 키가 없으면 KeyErrord["name"]
get(key, default)값이나 대체 값d.get("age", 0)
d[key] = value추가하거나 변경d["city"] = "서울"
keys() values() items()키, 값, 쌍for k, v in d.items():
update()다른 딕셔너리와 병합d.update({"a": 1})
d1 | d2병합한 새 딕셔너리merged = defaults | user
pop(key, default)삭제하고 값을 반환d.pop("tmp", None)
popitem()마지막으로 추가한 쌍을 삭제d.popitem()
setdefault(key, value)값을 반환하고, 키가 없으면 만듭니다d.setdefault("tags", []).append("py")
key in d키가 있는지 확인if "name" in d:
dict.fromkeys()키 목록으로 같은 값을 가진 딕셔너리 만들기dict.fromkeys("abc", 0)
len(d), del d[key]크기와 삭제del d["old"]

튜플과 집합

연산예제 → 결과
튜플 언패킹x, y = (3, 4)
집합에 추가s.add(5), 삭제는 s.discard(5)
합집합 / 교집합{1, 2} | {2, 3} → {1, 2, 3}; {1, 2} & {2, 3} → {2}
차집합{1, 2} - {2} → {1}
리스트의 중복 제거list(dict.fromkeys(items)) — 순서 유지

예외와 파일

try:
    number = int(input("숫자: "))
except ValueError as err:
    print("숫자가 아닙니다:", err)
else:
    print("성공")
finally:
    print("항상 실행됨")

with open("data.txt", "w", encoding="utf-8") as f:
    f.write("줄\n")

with open("data.txt", encoding="utf-8") as f:
    for line in f:
        print(line.rstrip())
예외발생 상황
SyntaxError, IndentationError문법 오류 또는 들여쓰기 오류
NameError이름이 정의되지 않음(오타)
TypeError맞지 않는 타입에 연산을 적용: "1" + 1
ValueError타입은 맞지만 값이 잘못됨: int("abc")
IndexError, KeyError인덱스나 키가 없음
FileNotFoundError파일을 찾을 수 없음
ZeroDivisionError0으로 나누기

클래스

from dataclasses import dataclass

class Dog:
    def __init__(self, name: str):
        self.name = name

    def bark(self) -> str:
        return f"{self.name}: 멍멍!"

@dataclass
class Point:
    x: float
    y: float

print(Dog("바둑이").bark())   # 바둑이: 멍멍!
print(Point(1, 2))            # Point(x=1, y=2)

파이썬 내장 모듈

표준 라이브러리는 인터프리터와 함께 설치되므로 import만 하면 됩니다.

모듈용도예제
math수학 계산math.sqrt(16) → 4.0
random난수random.randint(1, 6), random.choice(items)
datetime날짜와 시간datetime.date.today()
pathlib경로와 파일Path("data").glob("*.csv")
os, sys시스템, 환경 변수, 인자os.environ.get("HOME"), sys.argv
jsonJSON 읽기와 쓰기json.loads(text), json.dumps(obj, ensure_ascii=False)
csvCSV 표csv.DictReader(f)
collectionsCounter, defaultdict, dequeCounter("banana").most_common(1) → [('a', 3)]
itertools조합과 이터레이터 연결itertools.chain(a, b)
re정규 표현식re.findall(r"\d+", s)
time일시 정지와 시간 측정time.sleep(1), time.perf_counter()
asyncio비동기 코드asyncio.run(main())

파이썬 3.15에는 지연 import(PEP 810)가 추가되었습니다. lazy import pandas as pd는 모듈을 처음 사용할 때까지 로드를 미루므로, 무거운 의존성이 있는 스크립트도 훨씬 빨리 시작합니다.

터미널에서 쓰는 파이썬 명령

'파이썬 명령어'를 찾는 사람들이 보통 원하는 것은 인터프리터를 실행하고 라이브러리를 설치하는 명령입니다. Windows에서는 python3 대신 python이나 py를 쓰는 경우가 많습니다.

명령동작
python3 --version버전 표시
python3대화형 콘솔 REPL 열기(종료는 exit())
python3 script.py파일 실행
python3 -c "print(2 + 2)"한 줄 코드 실행
python3 -m venv .venv가상 환경 만들기
source .venv/bin/activate / .venv\Scripts\activate가상 환경 활성화(Linux, macOS / Windows)
python3 -m pip install requests패키지 설치
pip list, pip freeze > requirements.txt패키지 목록 보기와 저장
pip install -r requirements.txt파일에 적힌 의존성 설치
python3 -m http.server 8000현재 폴더를 여는 간단한 웹 서버
uv init, uv add requests, uv run main.pyuv로 프로젝트 만들기, 의존성 추가, 실행

초보자가 자주 하는 실수

  • 조건에 = 사용 — 조건에는 ==가 필요합니다. 한 개의 =은 대입입니다.
  • 콜론 누락 — if, for, def 뒤의 콜론을 빠뜨리면 SyntaxError가 납니다.
  • 문자열과 숫자 더하기 — "나이: " + 25는 오류입니다. f"나이: {25}"라고 쓰세요.
  • 순회하면서 리스트 변경 — for x in a[:]처럼 복사본을 순회하거나 새 리스트를 만드세요.
  • input()은 문자열을 반환 — 계산에 쓰려면 int()나 float()로 감싸세요.

정리

파이썬 문법은 들여쓰기, 콜론, 몇 가지 구문을 중심으로 돌아갑니다. 조건문, for와 while 반복문, 함수, 클래스가 그것입니다. 내장 함수 20여 개와 문자열, 리스트, 딕셔너리 메서드를 더하면 일상적인 작업 대부분을 처리할 수 있습니다. 이 치트시트를 저장해 두고, 표가 익숙해지면 모듈과 비동기 처리로 넘어가세요. 이 모든 내용은 '파이썬 3.15: 입문자에서 전문가까지' 강의에서 단계별로 실습합니다.

자주 묻는 질문

파이썬 들여쓰기는 몇 칸으로 해야 하나요?

PEP 8 표준에 따르면 한 단계당 네 칸입니다. 중요한 것은 블록 안에서 일관되게 쓰고, 탭과 섞지 않는 것입니다.

리스트와 튜플은 무엇이 다른가요?

리스트는 변경 가능해서 원소를 추가하거나 제자리에서 정렬할 수 있습니다. 튜플은 변경할 수 없어서 딕셔너리의 키로 쓸 수 있고, 고정된 값 묶음에 적합합니다.

파이썬 객체의 모든 메서드를 어떻게 보나요?

dir(obj)로 이름 목록을, help(obj)로 설명을 볼 수 있습니다. 예를 들어 help(str)은 문자열의 모든 메서드를 보여 줍니다.

sort()와 sorted()는 무엇이 다른가요?

list.sort()는 리스트 자체를 정렬하고 None을 반환합니다. sorted()는 정렬된 새 리스트를 반환하며, 어떤 순회 가능한 컬렉션에도 쓸 수 있습니다.

줄 끝에 세미콜론이 필요한가요?

필요하지 않습니다. 한 줄에 여러 명령을 쓸 때만 세미콜론을 사용할 수 있지만, 일반적인 코드에서는 명령마다 새 줄에 씁니다.