안녕하세요! 그레이 해커 월횽입니다. 오늘은 Python에서 사용할 수 있는 다양한 고급 기법에 대해 알아보겠습니다. 이 강의에서는 코드의 가독성, 효율성을 높이기 위한 몇 가지 고급 기능을 다룰 것입니다. 이 기법들은 여러분의 Python 코드가 더 깔끔하고 효율적으로 동작하게 도와줄 것입니다.
1. 리스트 컴프리헨션 (List Comprehension)
리스트 컴프리헨션은 기존 리스트나 다른 반복 가능한 객체로부터 새로운 리스트를 짧고 간결한 구문으로 생성할 수 있는 방법입니다. 가독성을 높이면서도 성능을 개선할 수 있습니다.
기본 구문
[expression for item in iterable if condition]
사용 예시
# 기존 방식
squares = []
for x in range(10):
squares.append(x**2)
# 리스트 컴프리헨션 사용
squares = [x**2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 출력
2. 제너레이터 (Generator)
제너레이터는 메모리를 절약하며, 반복 가능한 객체를 만들 때 유용합니다. yield 키워드를 사용하여 일시적으로 값을 반환하고, 이후에 이어서 실행할 수 있는 함수입니다. 큰 데이터를 처리하거나 지연 평가(lazy evaluation)가 필요한 상황에서 사용됩니다.
사용 예시
def my_generator():
for i in range(3):
yield i
gen = my_generator()
print(next(gen)) # 0 출력
print(next(gen)) # 1 출력
print(next(gen)) # 2 출력
3. 데코레이터 (Decorator)
데코레이터는 기존 함수에 기능을 추가할 때 사용하는 함수입니다. 데코레이터는 함수의 입력과 출력을 그대로 유지하면서도 새로운 기능을 추가할 수 있습니다. 로깅, 유효성 검사, 시간 측정 등에 자주 사용됩니다.
데코레이터 사용 예시
def my_decorator(func):
def wrapper():
print("함수가 호출되기 전")
func()
print("함수가 호출된 후")
return wrapper
@my_decorator
def say_hello():
print("안녕하세요!")
say_hello()
출력 결과
함수가 호출되기 전
안녕하세요!
함수가 호출된 후
4. 람다 함수 (Lambda Function)
람다 함수는 짧고 간단한 익명 함수입니다. 함수의 정의와 호출을 한 줄로 할 수 있어 간결한 코드를 작성할 때 유용합니다. 보통 간단한 연산을 수행할 때 자주 사용됩니다.
기본 구문
lambda arguments: expression
사용 예시
add = lambda x, y: x + y
print(add(5, 3)) # 8 출력
5. 맵(Map), 필터(Filter), 리듀스(Reduce)
· map(): 모든 항목에 대해 함수를 적용한 결과를 반환합니다.
· filter(): 조건에 맞는 항목들만 반환합니다.
· reduce(): 모든 항목을 누적하여 하나의 값으로 반환합니다.
map() 사용 예시
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers))
print(squared) # [1, 4, 9, 16] 출력
filter() 사용 예시
numbers = [1, 2, 3, 4]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # [2, 4] 출력
reduce() 사용 예시
from functools import reduce
numbers = [1, 2, 3, 4]
sum = reduce(lambda x, y: x + y, numbers)
print(sum) # 10 출력
6. 컨텍스트 매니저 (Context Manager)
컨텍스트 매니저는 코드의 자원 관리를 쉽게 처리할 수 있는 기법입니다. 가장 흔히 사용되는 예는 파일 처리입니다. with 문을 사용하여 자원 할당과 해제를 자동으로 처리할 수 있습니다.
파일 처리 예시
with open('example.txt', 'r') as file:
content = file.read()
print(content) # 파일 내용 출력
7. 고급 기법 정리
· 리스트 컴프리헨션: 간결한 리스트 생성 방식
· 제너레이터: 메모리 효율적인 반복자 생성
· 데코레이터: 함수에 추가 기능을 적용
· 람다 함수: 간단한 익명 함수
· map, filter, reduce: 함수형 프로그래밍 스타일 지원
· 컨텍스트 매니저: 자원 관리 자동화
다음 시간에는 Python의 테스트와 디버깅 기법에 대해 알아보겠습니다!
- 이전 수업 목록
'프로그래밍 > Python' 카테고리의 다른 글
[Python 강의] 14강 - 다양한 데이터 분석 기법 (1) | 2024.10.17 |
---|---|
[Python 강의] 13강 - 테스트와 디버깅 기법 (1) | 2024.10.16 |
[Python 강의] 11강 - 고급 데이터 구조 (0) | 2024.10.14 |
[Python 강의] 10강 - 라이브러리(Library) (1) | 2024.10.11 |
[Python 강의] 9강 - 모듈과 패키지 (1) | 2024.10.10 |