1. 데이터 타입 검증과 객체 확인
파이썬에서 변수의 데이터 타입을 확인하거나 객체의 속성을 조사할 때 사용하는 주요 함수들입니다.
isinstance(): 특정 변수가 지정한 클래스의 인스턴스인지 확인합니다.
sample_data = "Hello Python"
is_string = isinstance(sample_data, str)
print(is_string) # 결과: True
is_list = isinstance(sample_data, list)
print(is_list) # 결과: False
callable(): 객체가 호출 가능한지(함수 등) 확인합니다.
def my_func():
pass
value = 100
print(callable(my_func)) # 결과: True
print(callable(value)) # 결과: False
dir() 및 help(): 객체가 가진 메서드나 속성을 확인하거나 도움말을 출력합니다.
numbers = [1, 2, 3]
print(dir(numbers)) # 리스트 객체의 메서드 목록 출력
2. 파이썬의 인자 전달 방식
파이썬은 모든 것이 객체이며, 함수에 인자를 전달할 때 객체 참조(Pass by Object Reference) 방식을 사용합니다.
- 불변 타입(Immutable): 숫자, 문자열, 튜플 등은 값이 변경될 때 새로운 객체가 생성되므로 값 전달과 유사하게 동작합니다.
- 가변 타입(Mutable): 리스트, 딕셔너리 등은 원본 객체의 참조가 전달되어 함수 내부의 변경이 외부에도 영향을 미칩니다.
3. 익명 함수와 함수형 프로그래밍 도구
lambda는 이름 없는 간단한 함수를 정의할 때 사용하며, filter와 map과 함께 자주 쓰입니다.
# 두 수의 합을 구하는 익명 함수
add_func = lambda x, y: x + y
print(add_func(10, 20)) # 결과: 30
# filter: 조건에 맞는 요소만 추출
data = [10, 25, 30, 45, 50]
filtered_data = list(filter(lambda x: x > 30, data))
print(filtered_data) # 결과: [45, 50]
# map: 모든 요소에 함수 적용
mapped_data = list(map(lambda x: x * 2, data))
print(mapped_data) # 결과: [20, 50, 60, 90, 100]
4. 수치 연산 및 논리 판단 함수
- abs(): 절대값 반환
- all(): 반복 가능한 객체의 모든 요소가 참(True)이면 True 반환
- any(): 하나라도 참이면 True 반환
- divmod(): 몫과 나머지를 튜플 형태로 동시에 반환
- pow(x, y): x의 y제곱
- round(x, n): x를 소수점 n자리까지 반올림
print(all([True, 1, "text"])) # True
print(any([0, None, "", 1])) # True
quotient, remainder = divmod(10, 3)
print(quotient, remainder) # 3, 1
5. 진법 변환 및 문자 처리
데이터의 형식을 변환하거나 문자와 아스키(ASCII)/유니코드 값을 상호 변환합니다.
# 진법 변환
print(bin(10)) # 2진수: 0b1010
print(oct(10)) # 8진수: 0o12
print(hex(10)) # 16진수: 0xa
# 문자 변환
print(chr(97)) # 결과: 'a'
print(ord('a')) # 결과: 97
# 바이트 변환
byte_val = bytes("한글", encoding="utf-8")
print(byte_val)
6. 반복 및 집계 함수
# zip: 여러 반복 가능 객체를 병렬로 묶음
keys = ['name', 'age', 'city']
values = ['Alice', 25, 'Seoul']
combined = list(zip(keys, values))
print(combined) # [('name', 'Alice'), ('age', 25), ('city', 'Seoul')]
# max/min: 최대값 및 최소값
nums = [5, 2, 9, 1]
print(max(nums), min(nums)) # 9, 1
# iter/next: 반복자(Iterator) 생성 및 호출
it = iter([1, 2])
print(next(it)) # 1
print(next(it)) # 2
7. 파일 입출력 (File I/O)
파일을 다룰 때는 open() 함수를 사용하며, 작업이 끝난 후에는 반드시 close()를 호출하거나 with 문을 사용하는 것이 권장됩니다.
주요 파일 모드
| 모드 | 설명 |
|---|---|
| r | 읽기 전용 (기본값) |
| w | 쓰기 전용 (기존 내용 삭제 후 새로 작성) |
| x | 배타적 생성 (파일이 존재하면 에러) |
| a | 추가 (파일 끝에 내용 덧붙임) |
| b | 이진(Binary) 모드 (rb, wb 등) |
| + | 읽기 및 쓰기 병행 (r+, w+ 등) |
파일 메서드 활용
- tell(): 현재 파일 포인터의 위치 반환
- seek(offset): 파일 포인터의 위치 이동
- flush(): 버퍼의 내용을 파일에 즉시 기록
- truncate(size): 지정한 크기로 파일 절단
# 컨텍스트 매니저를 이용한 파일 쓰기 및 읽기
with open("test.txt", "w", encoding="utf-8") as f:
f.write("파이썬 파일 처리 테스트\n두 번째 줄")
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 여러 파일을 동시에 열기 (Python 2.7+ 및 3.x)
with open("source.txt", "r") as src, open("dest.txt", "w") as dest:
for line in src:
dest.write(line)