Python 요약정리
Posted by Albert 67Day 8Hour 41Min 40Sec ago [2025-12-01]
1. Python 기초
1.1 첫 프로그램
Python은 간단한 문법으로 시작할 수 있습니다.
' 주석은 '으로 시작합니다
print("Hello, World!") ' 화면에 출력
' 여러 줄 주석
"""
이것은
여러 줄 주석입니다
"""
1.2 변수 선언
Python은 변수 타입을 자동으로 인식합니다.
' 변수 선언 (타입 지정 불필요)
name = "홍길동"
age = 25
height = 175.5
is_student = True
print(f"이름: {name}, 나이: {age}") ' f-string 사용
2. 데이터 타입과 변수
2.1 기본 데이터 타입
' 숫자형 integer_num = 10 ' 정수 float_num = 3.14 ' 실수 complex_num = 3 + 4j ' 복소수 ' 문자열 text = "Python" multi_line = """여러 줄 문자열""" ' 불린 is_true = True is_false = False ' 타입 확인 print(type(integer_num)) ' <class 'int'>
2.2 문자열 연산
' 문자열 결합
greeting = "Hello" + " " + "World"
' 문자열 반복
repeated = "Ha" * 3 ' "HaHaHa"
' 문자열 인덱싱과 슬라이싱
text = "Python"
print(text[0]) ' 'P' (첫 번째 문자)
print(text[-1]) ' 'n' (마지막 문자)
print(text[0:3]) ' 'Pyt' (0~2번 인덱스)
print(text[2:]) ' 'thon' (2번부터 끝까지)
' 문자열 메서드
print(text.upper()) ' 'PYTHON'
print(text.lower()) ' 'python'
print(text.replace('P', 'J')) ' 'Jython'
2.3 형변환
' 문자열을 숫자로 num_str = "123" num = int(num_str) ' 숫자를 문자열로 age = 25 age_str = str(age) ' 실수를 정수로 pi = 3.14 int_pi = int(pi) ' 3
3. 제어문
3.1 조건문 (if-elif-else)
score = 85
if score >= 90:
print("A등급")
elif score >= 80:
print("B등급")
elif score >= 70:
print("C등급")
else:
print("D등급")
' 삼항 연산자
result = "합격" if score >= 60 else "불합격"
3.2 반복문 - for
' 리스트 반복
fruits = ["사과", "바나나", "오렌지"]
for fruit in fruits:
print(fruit)
' 범위 반복
for i in range(5): ' 0, 1, 2, 3, 4
print(i)
for i in range(1, 6): ' 1, 2, 3, 4, 5
print(i)
' enumerate로 인덱스와 값 함께 가져오기
for idx, fruit in enumerate(fruits):
print(f"{idx}: {fruit}")
3.3 반복문 - while
' while 반복
count = 0
while count < 5:
print(count)
count += 1
' break와 continue
for i in range(10):
if i == 3:
continue ' 3일 때 건너뛰기
if i == 7:
break ' 7일 때 반복 종료
print(i)
4. 함수
4.1 기본 함수
' 함수 정의
def greet(name):
return f"안녕하세요, {name}님!"
' 함수 호출
message = greet("홍길동")
print(message)
' 매개변수 기본값
def introduce(name, age=20):
return f"{name}, {age}세"
print(introduce("김철수")) ' 김철수, 20세
print(introduce("이영희", 25)) ' 이영희, 25세
4.2 다양한 매개변수
' 가변 인자 (*args)
def sum_all(*numbers):
total = 0
for num in numbers:
total += num
return total
print(sum_all(1, 2, 3, 4, 5)) ' 15
' 키워드 인자 (**kwargs)
def print_info(**info):
for key, value in info.items():
print(f"{key}: {value}")
print_info(name="홍길동", age=25, city="서울")
4.3 람다 함수
' 람다 함수 (익명 함수) square = lambda x: x ** 2 print(square(5)) ' 25 ' 리스트와 함께 사용 numbers = [1, 2, 3, 4, 5] squared = list(map(lambda x: x ** 2, numbers)) print(squared) ' [1, 4, 9, 16, 25]
5. 자료구조
5.1 리스트 (List)
' 리스트 생성
fruits = ["사과", "바나나", "오렌지"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]
' 리스트 메서드
fruits.append("포도") ' 끝에 추가
fruits.insert(1, "딸기") ' 특정 위치에 추가
fruits.remove("바나나") ' 값으로 제거
popped = fruits.pop() ' 마지막 요소 제거 및 반환
fruits.sort() ' 정렬
fruits.reverse() ' 뒤집기
' 리스트 컴프리헨션
squares = [x**2 for x in range(10)]
even_squares = [x**2 for x in range(10) if x % 2 == 0]
5.2 튜플 (Tuple)
' 튜플 (변경 불가능)
coordinates = (10, 20)
person = ("홍길동", 25, "서울")
' 튜플 언패킹
x, y = coordinates
name, age, city = person
' 튜플은 변경 불가
' coordinates[0] = 15 ' 오류 발생!
5.3 딕셔너리 (Dictionary)
' 딕셔너리 생성
person = {
"name": "홍길동",
"age": 25,
"city": "서울"
}
' 값 접근
print(person["name"]) ' 홍길동
print(person.get("age")) ' 25
' 값 추가/수정
person["job"] = "개발자"
person["age"] = 26
' 딕셔너리 메서드
keys = person.keys() ' 모든 키
values = person.values() ' 모든 값
items = person.items() ' (키, 값) 쌍
' 딕셔너리 컴프리헨션
squares_dict = {x: x**2 for x in range(5)}
5.4 셋 (Set)
' 셋 (중복 없음, 순서 없음)
fruits = {"사과", "바나나", "오렌지"}
fruits.add("포도")
fruits.remove("바나나")
' 집합 연산
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
union = set1 | set2 ' 합집합: {1, 2, 3, 4, 5, 6}
intersection = set1 & set2 ' 교집합: {3, 4}
difference = set1 - set2 ' 차집합: {1, 2}
6. 객체지향 프로그래밍
6.1 클래스 기본
' 클래스 정의
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
return f"제 이름은 {self.name}이고, {self.age}세입니다."
def birthday(self):
self.age += 1
' 객체 생성
person1 = Person("홍길동", 25)
print(person1.introduce())
person1.birthday()
print(person1.age) ' 26
6.2 상속
' 부모 클래스
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
pass
' 자식 클래스
class Dog(Animal):
def speak(self):
return f"{self.name}가 멍멍!"
class Cat(Animal):
def speak(self):
return f"{self.name}가 야옹!"
dog = Dog("바둑이")
cat = Cat("나비")
print(dog.speak()) ' 바둑이가 멍멍!
print(cat.speak()) ' 나비가 야옹!
6.3 클래스 메서드와 정적 메서드
class Calculator:
pi = 3.14159 ' 클래스 변수
def __init__(self, name):
self.name = name
' 인스턴스 메서드
def add(self, a, b):
return a + b
' 클래스 메서드
@classmethod
def circle_area(cls, radius):
return cls.pi * radius ** 2
' 정적 메서드
@staticmethod
def multiply(a, b):
return a * b
calc = Calculator("기본계산기")
print(calc.add(3, 5)) ' 8
print(Calculator.circle_area(5)) ' 78.53975
print(Calculator.multiply(4, 5)) ' 20
7. 파일 처리
7.1 파일 읽기/쓰기
' 파일 쓰기
with open("example.txt", "w", encoding="utf-8") as file:
file.write("안녕하세요\n")
file.write("Python 파일 처리입니다\n")
' 파일 읽기
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
' 한 줄씩 읽기
with open("example.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())
' 파일 추가
with open("example.txt", "a", encoding="utf-8") as file:
file.write("추가 내용\n")
8. 예외 처리
8.1 try-except
' 기본 예외 처리
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("오류 없이 실행됨")
finally:
print("항상 실행되는 코드")
8.2 사용자 정의 예외
' 사용자 정의 예외 클래스
class InvalidAgeError(Exception):
def __init__(self, age):
self.age = age
super().__init__(f"유효하지 않은 나이입니다: {age}")
def check_age(age):
if age < 0 or age > 150:
raise InvalidAgeError(age)
return "유효한 나이입니다"
try:
print(check_age(200))
except InvalidAgeError as e:
print(e)
9. 모듈과 패키지
9.1 모듈 사용
' 내장 모듈 사용
import math
import random
import datetime
' math 모듈
print(math.sqrt(16)) ' 4.0
print(math.pi) ' 3.141592...
' random 모듈
print(random.randint(1, 10)) ' 1~10 사이 랜덤 정수
print(random.choice(['a', 'b', 'c'])) ' 랜덤 선택
' datetime 모듈
now = datetime.datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))
' 특정 함수만 import
from math import sqrt, pi
print(sqrt(25))
' 별칭 사용
import numpy as np ' numpy가 설치되어 있다면
10. 고급 기능
10.1 데코레이터
' 데코레이터 정의
def timer_decorator(func):
import time
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"{func.__name__} 실행시간: {end - start:.4f}초")
return result
return wrapper
' 데코레이터 사용
@timer_decorator
def slow_function():
import time
time.sleep(1)
return "완료"
slow_function()
10.2 제너레이터
' 제너레이터 함수
def number_generator(n):
for i in range(n):
yield i ** 2
' 제너레이터 사용 (메모리 효율적)
gen = number_generator(5)
for num in gen:
print(num)
' 제너레이터 표현식
squares = (x**2 for x in range(10))
print(list(squares))
10.3 컨텍스트 매니저
' 사용자 정의 컨텍스트 매니저
class FileManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
if self.file:
self.file.close()
' 사용
with FileManager("test.txt", "w") as f:
f.write("컨텍스트 매니저 테스트")
10.4 리스트 고급 기능
' filter, map, reduce
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
' filter: 조건에 맞는 요소만
even = list(filter(lambda x: x % 2 == 0, numbers))
' map: 모든 요소에 함수 적용
squared = list(map(lambda x: x**2, numbers))
' reduce: 누적 계산
from functools import reduce
total = reduce(lambda x, y: x + y, numbers)
' zip: 여러 리스트 결합
names = ["홍길동", "김철수", "이영희"]
ages = [25, 30, 28]
combined = list(zip(names, ages))
print(combined) ' [('홍길동', 25), ('김철수', 30), ('이영희', 28)]
10.5 언패킹과 확장
' 언패킹
numbers = [1, 2, 3, 4, 5]
first, *rest, last = numbers
print(first) ' 1
print(rest) ' [2, 3, 4]
print(last) ' 5
' 딕셔너리 병합
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}
merged = {**dict1, **dict2}
' 리스트 확장
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = [*list1, *list2]
실전 예제: 간단한 학생 관리 프로그램
class Student:
def __init__(self, name, student_id):
self.name = name
self.student_id = student_id
self.grades = {}
def add_grade(self, subject, score):
self.grades[subject] = score
def get_average(self):
if not self.grades:
return 0
return sum(self.grades.values()) / len(self.grades)
def __str__(self):
return f"학생: {self.name} (ID: {self.student_id})"
class StudentManager:
def __init__(self):
self.students = {}
def add_student(self, name, student_id):
student = Student(name, student_id)
self.students[student_id] = student
return student
def get_student(self, student_id):
return self.students.get(student_id)
def print_all_students(self):
for student in self.students.values():
print(f"{student} - 평균: {student.get_average():.2f}")
' 사용 예제
manager = StudentManager()
' 학생 추가
student1 = manager.add_student("홍길동", "2024001")
student2 = manager.add_student("김철수", "2024002")
' 성적 추가
student1.add_grade("수학", 90)
student1.add_grade("영어", 85)
student2.add_grade("수학", 95)
student2.add_grade("영어", 88)
' 전체 학생 출력
manager.print_all_students()
학습 팁
- 단계별 학습: 기초부터 차근차근 배우세요
- 실습 중심: 코드를 직접 작성하고 실행해보세요
- 프로젝트 만들기: 배운 내용으로 작은 프로젝트를 만들어보세요
- 공식 문서 읽기: Python 공식 문서는 최고의 학습 자료입니다
- 커뮤니티 활용: Stack Overflow, GitHub 등을 활용하세요
Python은 배우기 쉽지만 강력한 언어입니다. 꾸준히 연습하면 누구나 능숙하게 사용할 수 있습니다!