이 문서는 파이썬(Python) 프로그래밍 언어의 기본적인 개념부터 실제 활용 예제까지 다루는 종합 가이드입니다. 파이썬은 배우기 쉽고 강력하며 다양한 분야에서 활용되는 언어로, 초보자부터 숙련된 개발자까지 모두에게 유용합니다. 이 가이드를 통해 파이썬의 핵심 문법을 이해하고, 간단한 프로그램을 직접 작성할 수 있는 기반을 마련할 수 있습니다.
파이썬은 1991년 귀도 반 로섬(Guido van Rossum)이 개발한 고수준(high-level), 인터프리터(interpreted), 객체 지향(object-oriented) 프로그래밍 언어입니다. 간결하고 읽기 쉬운 문법으로 유명하며, 다양한 운영체제에서 호환됩니다.
파이썬 코드를 실행하기 위해서는 파이썬 인터프리터가 설치되어 있어야 합니다. 공식 웹사이트에서 다운로드하여 설치할 수 있습니다.
python.org)에서 최신 버전 다운로드.이 섹션에서는 파이썬 프로그래밍의 가장 기본적인 문법 요소들을 다룹니다.
변수는 값을 저장하는 공간이며, 파이썬은 동적 타이핑(dynamic typing)을 지원하여 변수 선언 시 자료형을 명시할 필요가 없습니다.
# 정수형 변수 num_int = 10 # 부동 소수점 변수 num_float = 3.14 # 문자열 변수 text_str = "Hello, Python!" # 불리언 변수 is_valid = True print(num_int) print(num_float) print(text_str) print(is_valid)
파이썬은 다양한 종류의 연산자를 제공합니다.
| 연산자 종류 | 설명 | 예시 | 결과 |
|---|---|---|---|
| 산술 연산자 | 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지, 거듭제곱 | 5 + 2, 5 - 2, 5 * 2, 5 / 2, 5 % 2, 5 ** 2 | 7, 3, 10, 2.5, 1, 25 |
| 비교 연산자 | 두 값의 크기 비교 | 5 == 2, 5 != 2, 5 > 2, 5 < 2, 5 >= 2, 5 <= 2 | False, True, True, False, True, False |
| 논리 연산자 | 조건들을 조합 | True and False, True or False, not True | False, True, False |
| 할당 연산자 | 변수에 값 할당 | x = 10, x += 5 (x = x + 5) | x는 10, x는 15 |
특정 조건에 따라 코드 블록을 실행할 때 사용합니다.
score = 85
if score >= 90:
print("학점: A")
elif score >= 80:
print("학점: B")
elif score >= 70:
print("학점: C")
else:
print("학점: D 또는 F")
코드 블록을 여러 번 반복 실행할 때 사용합니다.
# 리스트의 각 요소 출력
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print(fruit)
# 0부터 4까지 출력 (range(5)는 0, 1, 2, 3, 4를 생성)
for i in range(5):
print(i)
count = 0
while count < 5:
print("Count:", count)
count += 1 # count = count + 1
함수는 특정 작업을 수행하는 코드 블록을 묶어 재사용 가능하게 만든 것입니다.
`def` 키워드를 사용하여 함수를 정의하고, 함수 이름 뒤에 괄호를 붙여 호출합니다.
# 매개변수가 없는 함수
def greet():
print("안녕하세요!")
greet() # 함수 호출
# 매개변수가 있는 함수
def greet_name(name):
print(f"안녕하세요, {name}님!") # f-string 사용
greet_name("김철수") # 함수 호출
# 반환값이 있는 함수
def add(a, b):
return a + b
result = add(5, 3)
print("덧셈 결과:", result)
def introduce(name, age=30):
print(f"이름: {name}, 나이: {age}")
introduce("이영희") # 나이 생략 시 기본값 30 사용
introduce("박민준", 25) # 나이 지정 시 지정된 값 사용
def print_args(*args):
print("위치 인자:", args)
print_args(1, 2, "hello")
def print_kwargs(**kwargs):
print("키워드 인자:", kwargs)
print_kwargs(name="Alice", age=25)
파이썬은 데이터를 효율적으로 저장하고 관리하기 위한 다양한 내장 데이터 구조를 제공합니다.
여러 개의 값을 순서대로 저장하는 변경 가능한(mutable) 컬렉션입니다. 대괄호 `[]`를 사용합니다.
append(): 요소 추가insert(): 특정 위치에 요소 삽입remove(): 요소 제거pop(): 특정 인덱스의 요소 제거 및 반환len(): 길이 반환my_list = [1, "hello", 3.14, True]
print("원본 리스트:", my_list)
my_list.append(5)
print("요소 추가 후:", my_list)
my_list.insert(1, "world")
print("요소 삽입 후:", my_list)
my_list.remove("hello")
print("요소 제거 후:", my_list)
popped_item = my_list.pop(0)
print("제거된 요소:", popped_item)
print("pop 후 리스트:", my_list)
print("리스트 길이:", len(my_list))
여러 개의 값을 순서대로 저장하는 변경 불가능한(immutable) 컬렉션입니다. 소괄호 `()`를 사용합니다.
my_tuple = (1, "apple", 3.14)
print("튜플:", my_tuple)
# 튜플은 변경 불가능하므로 다음 코드는 오류 발생:
# my_tuple[0] = 10
# my_tuple.append(5)
print("첫 번째 요소:", my_tuple[0])
print("튜플 길이:", len(my_tuple))
`키(key)`와 `값(value)`의 쌍으로 이루어진 변경 가능한(mutable) 컬렉션입니다. 중괄호 `{}`를 사용합니다.
dict[key] = value: 요소 추가 또는 변경dict.get(key): 키에 해당하는 값 가져오기 (키가 없으면 None 반환)del dict[key]: 요소 제거dict.keys(): 모든 키 반환dict.values(): 모든 값 반환dict.items(): 모든 키-값 쌍 반환my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print("원본 딕셔너리:", my_dict)
# 값 접근
print("이름:", my_dict["name"])
print("나이 (get 메서드):", my_dict.get("age"))
# 값 변경 및 추가
my_dict["age"] = 26
my_dict["job"] = "Engineer"
print("변경 및 추가 후:", my_dict)
# 요소 제거
del my_dict["city"]
print("요소 제거 후:", my_dict)
print("모든 키:", my_dict.keys())
print("모든 값:", my_dict.values())
print("모든 항목:", my_dict.items())
중복되지 않는 요소들을 저장하는 변경 가능한(mutable) 컬렉션입니다. 중괄호 `{}`를 사용하지만, 키-값 쌍이 아닌 단일 요소들을 저장합니다.
add(): 요소 추가remove(): 요소 제거union(): 합집합intersection(): 교집합difference(): 차집합my_set = {1, 2, 3, 4, 3, 2} # 중복 제거됨
print("원본 세트:", my_set)
my_set.add(5)
print("요소 추가 후:", my_set)
my_set.remove(1)
print("요소 제거 후:", my_set)
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print("합집합:", set1.union(set2))
print("교집합:", set1.intersection(set2))
print("차집합 (set1 - set2):", set1.difference(set2))
모듈은 파이썬 코드를 담고 있는 파일(`.py` 확장자)이며, 패키지는 여러 모듈을 계층적으로 조직한 디렉토리입니다. 코드를 재사용하고 관리하기 쉽게 만들어줍니다.
`import` 키워드를 사용하여 다른 모듈의 기능을 가져올 수 있습니다.
# math 모듈 전체 임포트
import math
print("파이:", math.pi)
# math 모듈에서 특정 함수만 임포트
from math import sqrt, ceil
print("루트 9:", sqrt(9))
print("올림 3.14:", ceil(3.14))
# 모듈에 별칭 부여
import random as rd
print("랜덤 숫자:", rd.randint(1, 10))
새로운 `.py` 파일을 생성하여 자신만의 모듈을 만들 수 있습니다. 예를 들어, `my_module.py` 파일을 만들고 그 안에 함수를 정의합니다.
my_module.py 내용:# my_module.py
def hello(name):
return f"안녕하세요, {name}님! (from my_module)"
MY_CONSTANT = 123
# main_script.py
import my_module
message = my_module.hello("DokuWiki")
print(message)
print("상수 값:", my_module.MY_CONSTANT)
파이썬을 사용하여 파일을 읽고 쓰는 방법을 알아봅니다.
open() 함수를 사용하여 파일을 열고, close() 메서드로 파일을 닫습니다. with 문을 사용하면 파일을 자동으로 닫아주므로 더 안전하고 편리합니다.
| 모드 | 설명 |
|---|---|
| 'r' | 읽기 모드 (기본값). 파일이 없으면 오류. |
| 'w' | 쓰기 모드. 파일이 없으면 생성, 있으면 내용 삭제 후 새로 작성. |
| 'a' | 추가 모드. 파일이 없으면 생성, 있으면 기존 내용 끝에 추가. |
| 'x' | 배타적 생성 모드. 파일이 있으면 오류, 없으면 생성. |
| 'b' | 바이너리 모드 (예: `'rb'`, `'wb'`). |
| 't' | 텍스트 모드 (기본값). |
# 파일 쓰기 (기존 내용 덮어쓰기)
with open("example.txt", "w", encoding="utf-8") as file:
file.write("첫 번째 줄입니다.\n")
file.write("두 번째 줄입니다.\n")
print("example.txt 파일에 쓰기 완료.")
# 파일 읽기
with open("example.txt", "r", encoding="utf-8") as file:
content = file.read()
print("\n--- example.txt 내용 ---")
print(content)
print("example.txt 파일 읽기 완료.")
# 파일 추가 쓰기
with open("example.txt", "a", encoding="utf-8") as file:
file.write("세 번째 줄이 추가되었습니다.\n")
print("example.txt 파일에 내용 추가 완료.")
# 다시 읽기
with open("example.txt", "r", encoding="utf-8") as file:
lines = file.readlines() # 각 줄을 리스트로 반환
print("\n--- example.txt 내용 (줄 단위) ---")
for line in lines:
print(line.strip()) # strip()으로 줄바꿈 문자 제거
프로그램 실행 중 발생할 수 있는 오류(예외)를 처리하여 프로그램이 비정상적으로 종료되는 것을 방지합니다. try, except, finally 블록을 사용합니다.
try:
# 잠재적으로 오류가 발생할 수 있는 코드
num1 = int(input("첫 번째 숫자를 입력하세요: "))
num2 = int(input("두 번째 숫자를 입력하세요: "))
result = num1 / num2
print(f"나눗셈 결과: {result}")
except ValueError:
# ValueError 발생 시 처리
print("오류: 유효한 숫자를 입력해주세요.")
except ZeroDivisionError:
# ZeroDivisionError 발생 시 처리
print("오류: 0으로 나눌 수 없습니다.")
except Exception as e:
# 모든 예외를 잡는 일반적인 예외 처리
print(f"예상치 못한 오류 발생: {e}")
finally:
# 예외 발생 여부와 관계없이 항상 실행되는 코드
print("예외 처리 블록이 종료되었습니다.")
앞서 배운 개념들을 활용하여 간단한 프로그램을 만들어봅니다.
사용자에게 숫자를 맞추는 게임을 만들어봅니다.
import random
secret_number = random.randint(1, 10)
attempts = 0
print("1부터 10 사이의 숫자를 맞춰보세요!")
while True:
try:
guess = int(input("숫자를 입력하세요: "))
attempts += 1
if guess < secret_number:
print("더 큰 숫자입니다!")
elif guess > secret_number:
print("더 작은 숫자입니다!")
else:
print(f"정답입니다! {attempts}번 만에 맞추셨어요!")
break
except ValueError:
print("유효한 숫자를 입력해주세요.")
여러 숫자의 평균을 계산하는 프로그램입니다.
def calculate_average(numbers):
if not numbers: # 리스트가 비어있는지 확인
return 0
total = sum(numbers) # 내장 함수 sum() 사용
return total / len(numbers)
# 사용자로부터 숫자 입력 받기
input_numbers_str = input("숫자들을 쉼표(,)로 구분하여 입력하세요: ")
# 문자열을 쉼표로 분리하고 각 부분을 정수로 변환
try:
numbers_list = [int(num.strip()) for num in input_numbers_str.split(',')]
avg = calculate_average(numbers_list)
print(f"입력된 숫자들의 평균: {avg:.2f}") # 소수점 둘째 자리까지 표시
except ValueError:
print("잘못된 입력입니다. 숫자를 쉼표로 구분하여 입력해주세요.")
except Exception as e:
print(f"오류 발생: {e}")
이 가이드를 통해 파이썬 프로그래밍의 기본적인 개념과 문법을 익히셨기를 바랍니다. 파이썬은 광범위한 분야에서 활용될 수 있는 강력한 도구이며, 이 가이드는 그 첫걸음일 뿐입니다.
Django, FlaskNumPy, Pandas, MatplotlibTensorFlow, PyTorch, scikit-learn꾸준한 연습과 탐구를 통해 파이썬 전문가로 성장하시길 응원합니다!