본문 바로가기
 
 
카테고리 없음

파이썬 파라미터 타입 지정을 통한 코드 개선 방법

by 업부업과 함께 2024. 12. 3.

 
 
 

 

반응형

파이썬은 동적 타이핑(dynamic typing) 언어로, 변수를 선언할 때 명시적으로 타입을 지정할 필요가 없습니다. 이는 매우 유연하고 직관적이지만, 대규모 프로젝트나 협업 시엔 가독성과 유지보수를 위해 **타입 지정**이 유용할 수 있습니다. 이번 글에서는 파이썬에서 파라미터 타입을 지정하는 다양한 방법과 이를 통해 코드를 개선하는 방법에 대해 알아보겠습니다.

기본 타입 힌트 사용하기

파이썬 3.5 버전부터는 **PEP 484**에서 파라미터와 반환값에 대한 타입 힌트를 제공할 수 있는 문법이 도입되었습니다. 이는 코드의 가독성을 높이고, 코드 에디터 및 IDE에서 타입 관련 오류를 사전에 발견할 수 있게 도와줍니다.


def add_numbers(a: int, b: int) -> int:
    return a + b

    

여기서 a: intb: int는 각각 'a는 정수형이어야 한다'는 정보를 전달합니다. -> int는 함수의 반환값이 정수형이라는 것을 의미합니다. 이를 통해 동료 개발자들은 함수의 기대되는 입력과 출력을 쉽게 이해할 수 있습니다.

타입 힌트의 강점과 한계

타입 힌트가 존재한다고 해서 파이썬이 강제적으로 타입 검사를 진행하는 것은 아닙니다. 이는 어디까지나 **자체 문서화**를 위해 제공되는 것이며,런타임에는 전혀 영향을 미치지 않습니다. 따라서 타입 힌트를 사용함에도 불구하고 개발자가 직접 타입 검증을 추가로 진행할 필요가 있을 수 있습니다.


def add_numbers(a: int, b: int) -> int:
    if not isinstance(a, int) or not isinstance(b, int):
        raise ValueError("Both arguments must be integers")
    return a + b

    

이처럼 코드 내부에서 isinstance() 함수를 활용해 실제 타입 검증을 해야 할 수도 있습니다.

컬렉션 타입에 대한 타입 힌트

함수가 리스트, 사전 등 **컬렉션 타입**을 파라미터로 받거나 반환할 때에는 타이핑 모듈의 기능을 이용해 더욱 명확한 타입 힌트를 줄 수 있습니다. 이는 복잡한 데이터 구조를 다룰 때 특히 유용합니다.


from typing import List, Dict

def process_data(data: List[Dict[str, int]]) -> List[int]:
    return [item["value"] for item in data]

    

여기서 List[Dict[str, int]]는 데이터가 문자열 키를 가지고 정수값을 가지는 딕셔너리의 리스트라는 것을 명시합니다. 이를 통해 코드가 복잡해져도 쉽게 그 구조를 이해할 수 있습니다.

커스텀 타입 힌트 정의하기

복잡한 데이터 타입의 반복 사용을 줄이기 위해 **타입 별칭**을 만들어 사용할 수도 있습니다. 타입별칭은 코드의 가독성을 높이고, 몇 번이고 다시 쓸 수 있게 합니다.


from typing import Tuple

Coord = Tuple[int, int]

def move(point: Coord, dx: int, dy: int) -> Coord:
    return (point[0] + dx, point[1] + dy)

    

Coord 타입 별칭은 코드의 의미를 더 명확히 전달하면서 중복을 줄이도록 도와줍니다.

Python의 Typing 모듈 활용법

**Typing 모듈**은 다양한 유형의 파라미터를 다루기 위한 여러 기능을 제공합니다. 예를 들면 가변 인자(functional arguments)나 제네릭(generics), 그리고 유니온(Union) 타입 등이 포함됩니다.


from typing import Union

def handle_data(data: Union[str, int, float]) -> str:
    return str(data)

    

여기서 Union[str, int, float]는 데이터가 문자열, 정수 또는 부동소수점일 수 있음을 나타냅니다. 이런 식으로 여러 타입을 매끄럽게 처리할 수 있습니다.

코드 검증 도구로 타입 힌트 활용하기


타입 힌트는 코드 검토 도구(MyPy, PyLint 등)와 함께 사용할 때 그 진가를 발휘합니다. 이를 통해 오류를 미리 감지하고, 코드의 안정성을 높일 수 있습니다.

MyPy는 가장 널리 사용되는 정적 타입 체커로서, 코드 내 타입 힌트를 기반으로 잠재적인 타입 문제를 분석합니다. 터미널에서 mypy script.py 명령어를 사용하여 코드 내 타입 오류를 점검할 수 있습니다.

이를 통해 **타입 안정성**을 확보하고, 장기적으로 코드베이스의 품질을 유지할 수 있게 됩니다.

이와 같은 파이썬 파라미터 타입 지정 기법을 통해 코드의 일관성을 높이고, 예상치 못한 오류를 사전에 방지할 수 있습니다. 앞으로의 프로젝트에 이러한 실용적인 팁을 적용하여 더 효율적이고 신뢰성 있는 코드를 작성해 보세요!

반응형