[WIL] 2주차

sudog·2023년 8월 20일
0

WIL

목록 보기
1/4

이번주에는 파이썬 기초와 심화 문법을 공부했다.
파이썬은 편리하고 강력한 기능들을 직관적이고 간단한 문법으로 지원한다.

현재의 지식 수준으로도 큰 불편함을 느끼지 못했는데 심화문법에서 본 몇몇 기능들은 뇌리에 깊게 박혔다. 어떤 것들이 있었는지 살펴보자.


all(iterable)은 내부에 반복가능한 객체를 받아 모든 요소가 참이면 참을 반환하는 함수이다. and로 모든 요소를 확인하는 것과 같다.

any(iterable)는 하나라도 참이라면 참을 반환해준다. or로 확인한다. 사용 예시는 다음과 같다.

if all([True, True, True, True]):
	print("모두 참입니다.")

if any([False, True, False, False]):
	print("적어도 하나는 참입니다.")

또 다른 기능은 데코레이터다. 데코레이터 자체는 함수의 일종이다.
함수를 받아서 기능을 넣거나 실행흐름을 변경한다.
예제를 만들어보자.

간단하게 숫자들을 더해서 반환하는 계산기 함수를 만들어보자. 주의해야 할 점은 인자가 항상 숫자로 들어온다는 보장이 없다는 것이다.
그래서 들어오는 인자가 숫자인지 체크하는 기능을 구현해야 한다.

하지만 체크하는 기능을 모든 계산기 함수마다 구현하는 것은 매우 번거롭고 귀찮은 일이다. 독립성과 재사용성을 위해 데코레이터를 도입해보자.

def number_checker(origin_func):
	# 함수마다 매개변수 형식이 달라서 args를 써야 함
    def wrapper(*args):
        try:
        	# Number type으로 변환
            origin_func(*map(int, args))
        # 문자가 들어오는 경우
        except ValueError:
            print('숫자만 계산합니다.')
    return wrapper
    
@number_checker
def add_two(a, b):
    print(a+b)
    
@number_checker
def add_three(a, b, c):
	print(a+b+c)
	
@number_checker
def add_all(*args):
	print(sum(args))

add_two('2', 4)
add_three(4, 'five', 2)
add_all(1, 2, '3', 4, 5)

코드 결과는 다음과 같다.

6
숫자만 계산합니다.
15

이제 어떤 사칙연산을 수행하는 계산기를 만들더라도 앞에 데코레이터를 붙이기만 하면 데이터타입 체크를 할 필요가 없어졌다.

profile
안녕하세요

0개의 댓글