이 문서는 파이썬(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
, Flask
NumPy
, Pandas
, Matplotlib
TensorFlow
, PyTorch
, scikit-learn
꾸준한 연습과 탐구를 통해 파이썬 전문가로 성장하시길 응원합니다!