파이썬 문법 정리가 필요한데 어디서부터 시작해야 할지 막막하셨나요? 파이썬은 전 세계에서 가장 많이 사용되는 프로그래밍 언어 중 하나이지만, 처음 접하면 낯선 개념들이 쏟아져 당황스러울 수 있습니다. 이 글에서는 변수와 자료형부터 함수, 클래스, 예외 처리까지 파이썬의 핵심 문법을 초보자도 이해할 수 있도록 단계별로 풀어서 설명합니다. 끝까지 읽으면 파이썬 기초 문법의 전체 그림이 한눈에 잡힐 것입니다.
목차
- 파이썬이란? 언어의 특징과 기초 개념
- 파이썬 문법의 핵심 원리 – 들여쓰기와 동적 타이핑
- 변수·자료형·연산자 – 파이썬의 기본 재료
- 조건문·반복문·함수 – 흐름을 제어하는 핵심 문법
- 리스트·딕셔너리·클래스 – 실무에서 자주 쓰는 문법
- 예외 처리와 파일 입출력 – 전문가처럼 코딩하는 법
1. 파이썬이란? 언어의 특징과 기초 개념
파이썬(Python)은 1991년 귀도 반 로섬(Guido van Rossum)이 만든 프로그래밍 언어입니다. 이름은 뱀이 아니라 영국의 코미디 그룹 ‘몬티 파이썬(Monty Python)’에서 따왔습니다. 현재는 웹 개발, 데이터 분석, 인공지능, 자동화 스크립트 등 거의 모든 분야에서 활발히 사용되고 있습니다.
파이썬이 인기 있는 이유
파이썬이 전 세계 개발자들에게 사랑받는 이유는 크게 세 가지입니다.
첫째, 문법이 쉽고 읽기 쉽습니다. 영어 문장과 비슷한 구조로 이루어져 있어 프로그래밍을 처음 배우는 사람도 비교적 빠르게 익힐 수 있습니다. 예를 들어 화면에 글자를 출력하는 코드가 단 한 줄입니다.
python
print("안녕하세요, 파이썬!")
둘째, 방대한 라이브러리 생태계를 갖추고 있습니다. NumPy(수치 계산), Pandas(데이터 분석), Django(웹 개발), TensorFlow(딥러닝) 등 목적에 맞는 도구를 바로 가져다 쓸 수 있습니다.
셋째, 커뮤니티가 활성화되어 있습니다. 전 세계 수백만 명의 개발자가 질문과 답변, 튜토리얼을 공유하고 있어 막혔을 때 도움을 받기 쉽습니다.
파이썬 설치와 실행 환경
파이썬을 시작하려면 먼저 공식 사이트(python.org)에서 최신 버전을 다운로드합니다. 설치 후에는 다음과 같은 환경에서 코드를 작성할 수 있습니다.
| 환경 | 특징 | 추천 대상 |
|---|---|---|
| IDLE | 파이썬 기본 내장 에디터 | 입문자 |
| VS Code | 가볍고 확장성 높은 에디터 | 일반 개발자 |
| PyCharm | 파이썬 전용 강력한 IDE | 중급 이상 |
| Jupyter Notebook | 셀 단위 실행, 시각화 강점 | 데이터 분석가 |
| Google Colab | 설치 없이 브라우저에서 실행 | 빠른 입문자 |
입문자라면 설치 없이 바로 사용할 수 있는 Google Colab을 가장 먼저 추천합니다.
2. 파이썬 문법의 핵심 원리 – 들여쓰기와 동적 타이핑
파이썬을 다른 언어와 구분 짓는 가장 독특한 특징 두 가지가 있습니다. 바로 **들여쓰기(Indentation)**와 **동적 타이핑(Dynamic Typing)**입니다. 이 두 가지 원리를 제대로 이해해야 파이썬 문법 전체가 자연스럽게 이해됩니다.
들여쓰기 – 파이썬의 가장 중요한 규칙
C, Java 같은 언어는 코드 블록을 중괄호 {}로 구분합니다. 파이썬은 다릅니다. **들여쓰기(스페이스 4칸 또는 탭 1개)**로 코드의 범위를 구분합니다.
python
# 올바른 들여쓰기
if True:
print("이 줄은 if 블록 안에 있습니다")
print("이 줄도 마찬가지입니다")
print("이 줄은 if 블록 밖에 있습니다")
# 잘못된 들여쓰기 → IndentationError 발생
if True:
print("들여쓰기가 없으면 오류!") # ❌
들여쓰기가 맞지 않으면 IndentationError가 발생합니다. 팀 내에서 탭과 스페이스를 혼용하면 오류가 생기므로, 스페이스 4칸을 표준으로 통일하는 것이 좋습니다(PEP 8 공식 권장 사항).
동적 타이핑 – 자료형을 자동으로 결정
Java나 C에서는 변수를 선언할 때 자료형을 명시해야 합니다(int x = 5;). 파이썬은 값을 넣는 순간 자료형이 자동으로 결정됩니다.
python
x = 10 # 정수(int)로 자동 결정
x = "안녕" # 문자열(str)로 자동 변경
x = 3.14 # 실수(float)로 자동 변경
이 덕분에 코드가 짧고 직관적이지만, 의도치 않은 자료형 변경으로 버그가 생길 수 있으니 주의해야 합니다. type() 함수로 현재 자료형을 언제든지 확인할 수 있습니다.
python
x = 42
print(type(x)) # <class 'int'>
3. 변수·자료형·연산자 – 파이썬의 기본 재료
프로그래밍의 가장 기본 단위는 데이터입니다. 파이썬에서 데이터를 담는 그릇이 변수이고, 데이터의 종류가 자료형입니다. 이 둘을 조작하는 도구가 연산자입니다.
변수 선언과 명명 규칙
파이썬에서 변수 선언은 매우 간단합니다. 변수명 = 값 형식으로 작성합니다.
python
name = "홍길동" # 문자열 변수
age = 25 # 정수 변수
height = 175.5 # 실수 변수
is_student = True # 불리언 변수
변수 이름을 지을 때는 다음 규칙을 따라야 합니다.
- 숫자로 시작할 수 없음 (
1name❌) - 공백 사용 불가, 언더스코어(
_) 사용 (my_name✓) - 파이썬 예약어 사용 불가 (
if,for,class등) - 대소문자 구분 (
Name과name은 다른 변수)
파이썬의 주요 자료형
파이썬에는 기본적으로 다음과 같은 자료형이 있습니다.
| 자료형 | 영문명 | 예시 | 설명 |
|---|---|---|---|
| 정수 | int | 10, -3, 0 | 소수점 없는 숫자 |
| 실수 | float | 3.14, -0.5 | 소수점 있는 숫자 |
| 문자열 | str | "안녕", 'hello' | 텍스트 데이터 |
| 불리언 | bool | True, False | 참/거짓 |
| 없음 | NoneType | None | 값이 없음을 표현 |
연산자 종류와 사용법
파이썬의 연산자는 크게 산술, 비교, 논리 연산자로 나뉩니다.
python
# 산술 연산자
print(10 + 3) # 13 (덧셈)
print(10 - 3) # 7 (뺄셈)
print(10 * 3) # 30 (곱셈)
print(10 / 3) # 3.333... (나눗셈, 실수 반환)
print(10 // 3) # 3 (몫)
print(10 % 3) # 1 (나머지)
print(2 ** 3) # 8 (거듭제곱)
# 비교 연산자 (결과는 True 또는 False)
print(10 > 3) # True
print(10 == 3) # False
print(10 != 3) # True
# 논리 연산자
print(True and False) # False
print(True or False) # True
print(not True) # False
문자열 연산도 직관적입니다.
python
first = "파이썬"
second = " 문법"
print(first + second) # 파이썬 문법 (연결)
print(first * 3) # 파이썬파이썬파이썬 (반복)
print(len(first)) # 3 (길이)
print(first[0]) # 파 (인덱싱, 0부터 시작)
print(first[0:2]) # 파이 (슬라이싱)
4. 조건문·반복문·함수 – 흐름을 제어하는 핵심 문법
변수와 자료형이 ‘재료’라면, 조건문과 반복문은 프로그램의 ‘흐름’을 만드는 도구입니다. 함수는 이 흐름을 재사용 가능한 단위로 묶어줍니다. 파이썬 문법 정리에서 가장 핵심이 되는 파트입니다.
조건문 (if / elif / else)
특정 조건에 따라 다른 코드를 실행하고 싶을 때 사용합니다.
python
score = 85
if score >= 90:
print("A 등급")
elif score >= 80:
print("B 등급") # 이 줄이 출력됨
elif score >= 70:
print("C 등급")
else:
print("D 등급")
조건식에는 비교 연산자 외에도 in, not in, is 등을 활용할 수 있습니다.
python
fruits = ["사과", "바나나", "포도"]
if "사과" in fruits:
print("사과가 있습니다") # 출력됨
if "수박" not in fruits:
print("수박은 없습니다") # 출력됨
반복문 (for / while)
같은 작업을 반복할 때 사용합니다. 파이썬에는 for와 while 두 종류가 있습니다.
for 반복문 – 정해진 횟수 또는 시퀀스를 순서대로 반복
python
# range() 함수와 함께 사용
for i in range(5): # 0, 1, 2, 3, 4
print(i, end=" ") # 0 1 2 3 4
# 리스트 순회
colors = ["빨강", "파랑", "초록"]
for color in colors:
print(color)
# enumerate로 인덱스와 값 함께 사용
for index, color in enumerate(colors):
print(f"{index}: {color}")
# 0: 빨강 / 1: 파랑 / 2: 초록
while 반복문 – 조건이 참인 동안 계속 반복
python
count = 0
while count < 5:
print(count)
count += 1 # count = count + 1
# break: 반복 강제 종료
while True:
user_input = input("종료하려면 'q' 입력: ")
if user_input == "q":
break
반복문 제어 키워드:
break→ 반복문 즉시 종료continue→ 현재 반복 건너뛰고 다음으로pass→ 아무것도 하지 않음 (자리 표시용)
함수 정의와 호출 (def)
함수는 특정 작업을 하는 코드를 이름 붙여 묶어 놓은 것입니다. 한 번 정의하면 여러 곳에서 재사용할 수 있어 코드가 간결해집니다.
python
# 기본 함수 정의
def greet(name):
print(f"안녕하세요, {name}님!")
greet("홍길동") # 안녕하세요, 홍길동님!
# 반환값이 있는 함수
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 8
# 기본값 매개변수
def power(base, exp=2):
return base ** exp
print(power(3)) # 9 (exp 생략 시 기본값 2 사용)
print(power(3, 3)) # 27
# 가변 인수 (*args, **kwargs)
def total(*args):
return sum(args)
print(total(1, 2, 3, 4, 5)) # 15
5. 리스트·딕셔너리·클래스 – 실무에서 자주 쓰는 문법
실무 파이썬 코드에서 가장 자주 등장하는 자료구조는 리스트와 딕셔너리입니다. 그리고 코드를 체계적으로 구성하기 위해 클래스를 활용합니다.
리스트 (List) – 순서가 있는 데이터 묶음
리스트는 여러 데이터를 순서대로 담는 자료구조입니다. 대괄호 []로 표현합니다.
python
# 리스트 생성
numbers = [1, 2, 3, 4, 5]
mixed = [1, "안녕", True, 3.14] # 다양한 자료형 혼합 가능
# 인덱싱과 슬라이싱
print(numbers[0]) # 1 (첫 번째 요소)
print(numbers[-1]) # 5 (마지막 요소)
print(numbers[1:3]) # [2, 3]
# 주요 메서드
numbers.append(6) # 끝에 추가 → [1,2,3,4,5,6]
numbers.insert(0, 0) # 0번 위치에 삽입 → [0,1,2,3,4,5,6]
numbers.remove(3) # 값 3 제거
numbers.pop() # 마지막 요소 제거 및 반환
numbers.sort() # 오름차순 정렬
numbers.reverse() # 역순 정렬
print(len(numbers)) # 리스트 길이
# 리스트 컴프리헨션 (Comprehension) – 파이썬다운 표현
squares = [x**2 for x in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
even = [x for x in range(10) if x % 2 == 0]
print(even) # [0, 2, 4, 6, 8]
딕셔너리 (Dictionary) – 키-값 쌍의 데이터
딕셔너리는 키(Key): 값(Value) 쌍으로 데이터를 저장합니다. 중괄호 {}로 표현하며, 키로 값을 빠르게 찾을 수 있습니다.
python
# 딕셔너리 생성
person = {
"name": "홍길동",
"age": 25,
"job": "개발자"
}
# 값 접근
print(person["name"]) # 홍길동
print(person.get("age")) # 25
print(person.get("email", "없음")) # 없음 (키가 없을 때 기본값)
# 값 추가·수정·삭제
person["email"] = "hong@example.com" # 추가
person["age"] = 26 # 수정
del person["job"] # 삭제
# 딕셔너리 순회
for key, value in person.items():
print(f"{key}: {value}")
# 주요 메서드
print(person.keys()) # 키 목록
print(person.values()) # 값 목록
print(person.items()) # 키-값 쌍 목록
튜플(Tuple)과 집합(Set)도 자주 쓰이는 자료구조입니다.
python
# 튜플 – 변경 불가능한 리스트
coords = (37.5665, 126.9780) # 위도, 경도
print(coords[0]) # 37.5665
# 집합 – 중복 없는 데이터
fruits = {"사과", "바나나", "사과", "포도"}
print(fruits) # {'사과', '바나나', '포도'} (중복 제거)
클래스 (Class) – 객체 지향 프로그래밍의 기초
클래스는 관련된 변수(속성)와 함수(메서드)를 하나로 묶은 설계도입니다. 이 설계도로 만든 실체를 **객체(Object)**라고 합니다.
python
class Dog:
# __init__: 객체 생성 시 자동으로 실행되는 메서드
def __init__(self, name, breed):
self.name = name # 속성(attribute)
self.breed = breed
# 메서드(method) 정의
def bark(self):
print(f"{self.name}이(가) 짖습니다: 멍멍!")
def info(self):
print(f"이름: {self.name}, 품종: {self.breed}")
# 객체 생성
dog1 = Dog("초코", "포메라니안")
dog2 = Dog("바둑이", "진돗개")
# 메서드 호출
dog1.bark() # 초코이(가) 짖습니다: 멍멍!
dog2.info() # 이름: 바둑이, 품종: 진돗개
# 상속 (Inheritance) – 기존 클래스를 물려받아 확장
class GuideDog(Dog):
def guide(self):
print(f"{self.name}이(가) 시각장애인을 안내합니다.")
guide = GuideDog("사랑이", "래브라도")
guide.bark() # 부모 클래스 메서드 사용 가능
guide.guide() # 자식 클래스 메서드
6. 예외 처리와 파일 입출력 – 전문가처럼 코딩하는 법
초보자와 숙련자를 나누는 기준 중 하나가 바로 예외 처리입니다. 코드가 실행 중에 예상치 못한 오류가 발생하더라도 프로그램이 멈추지 않도록 처리하는 기법입니다. 파일 입출력과 함께 실무에서 매우 자주 쓰입니다.
예외 처리 (try / except / finally)
오류가 발생할 가능성이 있는 코드를 try 블록에 넣고, 오류 발생 시 처리할 내용을 except 블록에 작성합니다.
python
# 기본 예외 처리
try:
number = int(input("숫자를 입력하세요: "))
result = 10 / number
print(f"결과: {result}")
except ValueError:
print("숫자가 아닌 값을 입력했습니다.")
except ZeroDivisionError:
print("0으로 나눌 수 없습니다.")
except Exception as e:
print(f"예상치 못한 오류 발생: {e}")
else:
print("오류 없이 정상 실행되었습니다.") # try 성공 시 실행
finally:
print("항상 실행되는 블록입니다.") # 오류 여부 상관없이 실행
자주 발생하는 예외 유형:
| 예외 이름 | 발생 상황 |
|---|---|
ValueError | 잘못된 값 (숫자 자리에 문자 입력 등) |
TypeError | 잘못된 자료형 연산 |
ZeroDivisionError | 0으로 나누기 |
IndexError | 리스트 범위 초과 |
KeyError | 딕셔너리에 없는 키 접근 |
FileNotFoundError | 존재하지 않는 파일 열기 |
파일 입출력 (File I/O)
파이썬에서 파일을 읽고 쓰는 기본 방법입니다.
python
# 파일 쓰기
with open("test.txt", "w", encoding="utf-8") as f:
f.write("파이썬 파일 입출력 예제입니다.\n")
f.write("두 번째 줄입니다.\n")
# 파일 읽기
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read() # 전체 읽기
print(content)
# 한 줄씩 읽기
with open("test.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip()) # 줄바꿈 문자 제거
with 문을 사용하면 파일 작업이 끝난 후 자동으로 파일을 닫아주므로, 리소스 누수 없이 안전하게 파일을 다룰 수 있습니다.
모듈과 패키지 – 코드 재사용의 핵심
파이썬의 강점 중 하나는 방대한 표준 라이브러리와 외부 패키지입니다.
python
# 표준 라이브러리 사용
import math
print(math.sqrt(16)) # 4.0
print(math.pi) # 3.14159...
import random
print(random.randint(1, 10)) # 1~10 사이 랜덤 정수
import datetime
today = datetime.date.today()
print(today) # 오늘 날짜 출력
# 외부 패키지 설치 및 사용 (터미널에서)
# pip install requests
import requests
response = requests.get("https://api.example.com/data")
print(response.status_code) # 200 (성공)
결론
파이썬 문법 정리의 핵심은 들여쓰기 규칙, 자료형과 연산자, 조건문·반복문·함수라는 세 가지 기둥을 먼저 단단히 다지는 것입니다. 리스트·딕셔너리·클래스·예외 처리는 그 위에 쌓이는 실무 역량이며, 기초가 탄탄할수록 빠르게 습득할 수 있습니다. 오늘 정리한 파이썬 문법 정리 내용을 바탕으로 직접 코드를 작성해보는 것이 가장 빠른 학습법입니다.
지금 바로 Google Colab을 열고 이 글에 나온 예제 코드를 한 줄씩 직접 입력해 보세요. 손으로 쳐보는 것만으로도 실력이 눈에 띄게 향상됩니다.
답글 남기기