파이썬/Basic

파이썬 함수에 대한 4가지 고급 트릭

코샵 2023. 6. 27. 10:41
반응형

파이썬은 조건문, 반복문, 예외처리를 이용하여 프로그래밍을 할 수 있습니다. 이 글에서는 파이썬에서 조건문, 반복문, 예외처리를 사용하는 방법에 대해 자세히 알아보겠습니다.

1. 키워드 아규먼트 강제하기

키워드 인수에는 인자를 순서에 따라 넘겨줘야 하는 불편함을 없애주고, 명명된 인수를 사용함으로써 가독성을 높이는 장점이 있습니다. 파이썬에서는 PEP 3202에서 설명하는 것처럼 키워드 아규먼트를 강제할 수 있습니다. 이에 대한 예시는 다음과 같습니다.

def f(*, a, b):
    print(a, b)

f(1, 2)
# TypeError: f() takes 0 positional arguments but 2 were given

f(a=1, b=2) # 1 2

2. 함수 언패킹을 위해 * 와 ** 사용하기

일부 함수에는 긴 인수 목록이 필요한 경우가 있습니다. 이러한 경우에는 딕셔너리나 배열을 사용하여 인수를 전달할 수 있습니다. 이 때, ** 접두사를 사용하여 딕셔너리와 함께 사용할 수 있습니다. 또한, 배열의 압축을 풀기 위해서는 *를 사용하여 함수의 위치 인수로 사용할 수 있습니다.

def f(a, b):
    print(a, b)

args = { "a": 1, "b": 2 }
f(**args) # 1 2

def f(a, b, c):
    print(a, b, c)

l = [1, 2, 3]
f(*l) # 1 2 3

3. 데코레이터로 함수 꾸미기

데코레이터는 기존의 코드를 수정하지 않고 함수의 동작을 수정하는 함수 래퍼입니다. 데코레이터는 많은 사용 사례가 있으며, Flask와 같은 프레임워크를 사용하면 데코레이터를 사용하는 것이 일반적입니다. 다음은 데코레이터를 사용한 예시입니다.

def print_argument(func):
    def wrapper(the_number):
        print("Argument for", func.__name__, "is", the_number)
        return func(the_number)
    return wrapper

@print_argument
def add_one(x):
    return x + 1

print(add_one(1))

4. 이름 없는 함수(람다)

람다 함수는 함수의 이름을 정의하지 않고도 함수를 정의할 수 있는 방법입니다. 람다 함수를 사용하여 변수에 할당할 수 있으며, 함수의 인수로 사용할 수도 있습니다.

add_one = lambda x: x + 1
print(add_one(3)) # 4

numbers = [1, 2, 3, 4]
times_two = map(lambda x: x * 2, numbers)
print(list(times_two)) # [2, 4, 6, 8]

위의 내용을 참고하여 파이썬 함수를 보다 효율적으로 작성해보세요!