1. Python과 Java 비교
- Python: 인터프리터 언어로 실행 시 직접 해석. 동적 타입 지원으로 유연하나 런타임 오류 가능성 존재
- Java: 컴파일 언어로 머신 코드 변환 후 실행. 정적 타입으로 컴파일 시 오류 검출 가능
2. 최대 재귀 깊이
기본값 998. sys.setrecursionlimit()로 조정 가능(3925-3929 범위 권장)
3. Python2 vs Python3 차이
- 입력 함수: Py2 - raw_input(), Py3 - input()
- 출력: Py2 - print 문, Py3 - print() 함수
4. *args와 **kwargs
- *args: 키 없이 튜플 형식으로 가변 인자 전달
- **kwargs: 키-값 쌍으로 딕셔너리 형식 전달
5. 주요 자료형 메서드
# 문자열
"text".upper() # 대문자 변환
"a,b,c".split(',') # 분할
# 리스트
nums = [1,2,3]
nums.append(4) # 요소 추가
nums.sort() # 정렬
# 튜플
data = (1,2,2)
data.count(2) # 요소 카운트
# 딕셔너리
info = {'a':1}
info.get('a') # 값 조회
info.keys() # 키 목록
6. is와 == 차이
- ==: 값 동등성 비교
- is: 객체 동일성 확인 (메모리 주소 기준)
7. 람다 표현식
# 기본 형식
lambda 매개변수: 표현식
# 활용 예시
제곱 = lambda x: x**2
print(제곱(5)) # 25
# 필터링
result = filter(lambda n: n%2==0, [1,2,3,4])
print(list(result)) # [2,4]
8. pass 키워드
구문 완성을 위한 자리 표시자. 빈 블록 방지용
9. 얕은/깊은 복사
- 얕은 복사: 외부 객체만 복제, 내부 객체는 참조
- 깊은 복사: 모든 중첩 객체 재생성
10. 가변/불변 타입
- 가변: 리스트, 딕셔너리, 집합 (객체 수정 가능)
- 불변: 정수, 문자열, 튜플 (새 객체 생성 필요)
11. 내장 함수
abs(-5) # 절대값
sorted([3,1,2]) # 정렬
list(range(5)) # 범위 생성
isinstance(5, int) # 타입 확인
12. 고차 함수
# map: 모든 요소 변환
list(map(str.upper, ['a','b']))
# filter: 조건 필터링
list(filter(lambda x: x>0, [-1,0,1]))
# reduce: 누적 연산
from functools import reduce
reduce(lambda a,b: a*b, [1,2,3,4]) # 24
13. 생성자/반복자/반복 가능 객체
- 반복 가능 객체: __iter__() 구현
- 반복자: __next__()로 상태 기억
- 생성자: yield로 지연 계산
14. functools 모듈
- partial: 인자 고정
- lru_cache: 결과 캐싱
- wraps: 데코레이터 메타데이터 보존
15. isinstance() 활용
def validate(data):
if not isinstance(data, list):
raise TypeError("리스트 필요")
# 처리 로직
16. 클로저
내부 함수가 외부 변수를 기억하는 구조. 함수 팩토리 구현에 활용
17. 주요 모듈
- os: 파일 시스템 작업
- sys: 인터프리터 제어
- re: 정규 표현식
- datetime: 날짜/시간 처리
- collections: 확장 자료구조
18. random 모듈
난수 생성: random(), randint(), choice() 등 제공
19. 정적/클래스 메서드
class Example:
@staticmethod
def util():
print("독립 함수")
@classmethod
def factory(cls):
return cls()
20. 싱글톤 패턴
class Singleton:
_instance = None
def __new__(cls):
if not cls._instance:
cls._instance = super().__new__(cls)
return cls._instance
21. 예외 처리
try:
risky_operation()
except ValueError as e:
print(f"오류: {e}")
finally:
cleanup_resources()
22. 컨텍스트 관리자
class CustomContext:
def __enter__(self):
print("시작")
return resource
def __exit__(self, *args):
print("정리")
with CustomContext() as res:
res.operate()
23. 특수 메서드
- __init__: 객체 초기화
- __new__: 객체 생성 담당
- __str__: 문자열 표현 정의
24. 로드 밸런싱
트래픽을 여러 서버에 분산하여 성능과 안정성 향상