파이썬 기초 문법과 컴퓨터 시스템의 이해

1. 프로그래밍 언어와 컴퓨터 시스템의 관계

프로그래밍 언어는 인간의 의도를 컴퓨터가 이해할 수 있는 명령으로 전달하기 위한 소통 도구입니다. 사람이 논리적인 사고 과정을 언어로 표현하면, 컴퓨터는 이를 받아들여 실행함으로써 복잡한 연산이나 반복 작업을 대신 처리합니다.

컴퓨터 하드웨어의 구성 요소

  • CPU (중앙처리장치): 인간의 두뇌 역할을 하며 제어와 연산을 담당합니다.
  • 메모리 (RAM): 전기적 신호로 데이터를 저장하며 속도가 매우 빠르지만 휘발성입니다. 프로그램 실행 시 코드가 이곳에 적재됩니다.
  • 보조기억장치 (HDD/SSD): 데이터를 영구적으로 저장하는 공간입니다.
  • 입출력 장치: 마우스, 키보드와 같은 입력 도구와 모니터, 프린터 같은 출력 도구입니다.

운영체제 (OS)의 역할

운영체제는 하드웨어를 효율적으로 관리하고 응용 프로그램이 하드웨어 자원을 쉽게 사용할 수 있도록 인터페이스를 제공하는 소프트웨어입니다. 파이썬과 같은 응용 프로그램은 운영체제를 통해 하드웨어에 접근합니다.

2. 파이썬 변수 관리와 메모리 구조

변수는 데이터를 저장하는 메모리 공간의 주소를 가리키는 이름입니다. 파이썬은 객체 지향 언어로, 모든 데이터는 객체로 관리됩니다.

# 변수 정의 및 참조
user_score = 95
print(user_score)

# 참조 횟수 계산 (Garbage Collection)
# 특정 값에 연결된 변수 이름의 개수가 0이 되면 자동으로 메모리에서 해제됩니다.
a = [1, 2, 3]  # 참조 횟수 1
b = a          # 참조 횟수 2
del a          # 참조 횟수 1

변수 명명 규칙

  • 문자, 숫자, 언더바(_)의 조합으로 구성합니다.
  • 숫자로 시작할 수 없습니다.
  • 파이썬 예약어(if, for, def 등)는 변수명으로 사용할 수 없습니다.
  • 권장 스타일: snake_case (예: student_name)

3. 기본 데이터 타입과 특징

파이썬은 데이터의 상태를 표현하기 위해 다양한 타입을 제공하며, 이는 가변성(Mutable)과 불변성(Immutable)으로 나뉩니다.

  • 숫자형 (int, float): 정수와 실수를 다룹니다. 산술 연산이 가능하며 불변 객체입니다.
  • 문자열 (str): 텍스트 데이터를 저장하며 불변 객체입니다.
  • 리스트 (list): 순서가 있는 가변적 시퀀스 데이터 타입입니다. [item1, item2] 형태로 정의합니다.
  • 딕셔너리 (dict): 키-값(Key-Value) 쌍으로 데이터를 저장하는 가변 객체입니다.
  • 불리언 (bool): True와 False의 논리값을 나타냅니다.
# 리스트와 딕셔너리 예시
hobbies = ["Python", "Cycling", "Reading"]
user_profile = {"id": "dev_user", "level": 10}

# 데이터 접근
print(hobbies[0])
print(user_profile["id"])

4. 제어문과 반복문

조건에 따라 흐름을 바꾸거나 특정 코드를 반복해서 실행할 때 사용합니다.

# 조건문 예시
current_age = 22
if current_age >= 19:
    print("성인입니다.")
else:
    print("미성년자입니다.")

# 반복문 예시 (for)
for i in range(3):
    print(f"반복 횟수: {i}")

# while 루프 제어
count_val = 0
while count_val < 5:
    if count_val == 3:
        break
    print(count_val)
    count_val += 1

5. 파이썬 함수와 데코레이터

함수는 특정 기능을 수행하는 코드의 묶음으로, 재사용성을 높여줍니다. 파이썬 함수는 일급 객체로 다뤄져 변수에 할당하거나 인자로 전달할 수 있습니다.

# 함수 정의와 가변 인자
def calculate_sum(*args):
    total = 0
    for num in args:
        total += num
    return total

print(calculate_sum(10, 20, 30))

# 데코레이터 (기능 확장)
import time

def execution_timer(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print(f"소요 시간: {end_time - start_time:.4f}s")
        return result
    return wrapper

@execution_timer
def process_task():
    time.sleep(1)
    print("작업 완료")

process_task()

6. 파일 입출력과 데이터 직렬화

데이터를 영구적으로 보관하기 위해 파일을 읽고 쓰는 과정이 필요합니다.

# 파일 쓰기 및 읽기 (With 문 활용)
file_path = "sample_log.txt"

with open(file_path, "w", encoding="utf-8") as f:
    f.write("System Log: Operation Success\n")

with open(file_path, "r", encoding="utf-8") as f:
    content = f.read()
    print(content)

# JSON 직렬화
import json
data_map = {"status": "ok", "code": 200}
json_string = json.dumps(data_map) # 객체를 문자열로 변환
parsed_data = json.loads(json_string) # 문자열을 객체로 변환

7. 유용한 표준 라이브러리

파이썬은 다양한 내장 모듈을 통해 강력한 기능을 지원합니다.

  • os: 디렉토리 생성, 환경 변수 확인 등 시스템 운영체제 관련 작업.
  • hashlib: MD5, SHA-256 등 해시 알고리즘을 이용한 암호화 작업.
  • re: 정규표현식을 사용한 텍스트 패턴 매칭.
  • random: 난수 생성 및 데이터 무작위 추출.
# 해시 라이브러리 예시
import hashlib
pwd_hasher = hashlib.sha256()
pwd_hasher.update("user_password_123".encode("utf-8"))
print(pwd_hasher.hexdigest())

# 정규표현식 예시
import re
text_data = "Contact: test@example.com"
email_pattern = r'[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+'
match = re.findall(email_pattern, text_data)
print(match)

태그: python MemoryManagement ControlFlow JSON RegularExpression

9월 23일 17:52에 게시됨