1. 파일 포인터(File Pointer)란?파이썬에서 파일을 다룰 때 내부적으로 파일 포인터(file pointer)가 현재 읽기/쓰기 작업이 이뤄지는 위치를 가리킨다.파일을 열면 포인터는 항상 파일의 처음(0 바이트 위치)을 가리키고, 파일을 읽거나 쓰면서 이 포인터는 앞으로 이동한다.1-1. 파일 포인터 확인: tell()with open("example.txt", "r") as f: print(f.tell()) # 현재 위치 확인 f.read(5) print(f.tell()) # 5바이트 읽은 후 위치 tell() 메서드를 통해 현재 파일 포인터의 위치(바이트 단위)를 확인할 수 있음.1-2. 파일 포인터 이동: seek(offset, whence)with open("examp..
1. 표준 스트림(Standard Stream)파이썬은 기본적으로 아래와 같은 세 가지 표준 스트림을 제공한다Stream역할설명sys.stdin표준 입력사용자 입력을 받을 때 사용(ex. input() 내부적으로 사용)sys.stdout표준 출력출력 데이터를 화면에 표시할 때 사용(ex. print() 내부적으로 사용)sys.stderr표준 에러 출력에러 메시지 출력 전용 스트림에러 로깅이나 디버깅에 사용import sys# 입력 받기# data = sys.stdin.readline()# 출력하기sys.stdout.write("표준 출력\n")# 에러 출력sys.stderr.write("표준 에러 출력\n") 2. 예외 발생 시 e.errno 로 에러 진단파일 입출력 등에서 예외가 발생하면, OSErro..
python의 파일 경로 처리파이썬에서 파일 경로를 다룰 때는 운영체제마다 디렉토리 구분자(path separator)가 다르다는 점을 반드시 고려해야 한다.1. 운영체제별 디렉토리 구분자Windows: 백슬래시 \Linux / macOS: 슬래시 /# Windows 예시C:\Users\miomio\Documents# Linux/macOS 예시/home/miomio/documents또한 주의 사항으로는 Window에서는 대소문자를 구별하지 않지만, 리눅스에서는 대소문자를 구분한다는 점도 명심해야한다. 2. 파이썬에서 경로를 안전하게 처리하는 방법2-1. os.path 모듈 사용import ospath = os.path.join("folder", "subfolder", "file.txt")print(pat..
클로저(Closure)란? 클로저(Closure)는 함수가 종료된 이후에도, 해당 함수의 지역 변수 값을 기억하는 기법이다.함수 내부에 선언된 내부 함수(inner function)가 바깥 함수의 변수에 접근할 수 있으며, 그 값이 유지된다. 1. 클로저가 아닌 잘못된 예def outer(par): loc = parvar = 1outer(var)print(par)print(loc)위 코드는 오류(NameError)를 발생시킨다.par와 loc는 함수의 지역 변수이기 때문에 외부에서 접근할 수 없다. 2. 클로저 예제def outer(par): loc = par def inner(): return loc return innervar = 1fun = outer(var)pri..
1. lambda 함수 기본 구조lambda 매개변수들: 표현식함수 이름 없이 사용하는 익명 함수간단한 계산이나 함수를 간결하게 표현할 때 사용예제two = lambda: 2sqr = lambda x: x * xpwr = lambda x, y: x ** yfor a in range(-2, 3): print(sqr(a), end=" ") print(pwr(a, two()))two()는 항상 2를 반환sqr(a)는 a의 제곱pwr(a, 2)는 a의 2제곱 2. map() 함수와 lambdamap(함수, 반복가능한객체)반복 가능한 객체는 1개 이상일 수 있다.예시 코드와 설명은 아래의 주석을 참고한다.반복 가능한 객체의 각 요소에 함수를 적용map 결과는 이터레이터 → list()로 변환해서 사용예..

1. except 구문에서 raise 사용raise는 예외를 발생시킬 때 사용하는 키워드.반드시 except 안에서만 써야 하는 건 아님일반 코드, 함수, 조건문 등에서도 raise는 자유롭게 사용할 수 있다def divide(x, y): if y == 0: raise ValueError("0으로 나눌 수 없습니다.") return x / y except 블록 안에서 raise를 쓰는 경우는 예외를 다시 던질 때이다.try: something()except ValueError as e: print("에러 발생:", e) raise # 예외를 다시 던짐 (re-raise) 2. except 순서의 중요성순서 매우 중요하다! 예외는 위에서부터 차례대로 검사한다.구체적..