프로그래밍/Python

[Python 강의] 12강 - 고급 기법

월횽 2024. 10. 15. 06:30
728x90
반응형
SMALL

안녕하세요! 그레이 해커 월횽입니다. 오늘은 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)가 필요한 상황에서 사용됩니다.

728x90

사용 예시

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)

데코레이터는 기존 함수에 기능을 추가할 때 사용하는 함수입니다. 데코레이터는 함수의 입력과 출력을 그대로 유지하면서도 새로운 기능을 추가할 수 있습니다. 로깅, 유효성 검사, 시간 측정 등에 자주 사용됩니다.

SMALL

데코레이터 사용 예시

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의 테스트와 디버깅 기법에 대해 알아보겠습니다!

 

 

 

 

 

- 이전 수업 목록

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST