Python 내장 함수 및 파일 입출력 활용 가이드

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는 이름 없는 간단한 함수를 정의할 때 사용하며, filtermap과 함께 자주 쓰입니다.

# 두 수의 합을 구하는 익명 함수
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)

태그: python built-in-functions file-io lambda iterator

7월 25일 16:27에 게시됨