DSP : : For Entertainment/: : Python3

파이썬 함수 주석[function annotation] 화살표 (->), 콜론(:)

Jay.P Morgan 2025. 12. 6. 01:37

 

 

파이썬에서  함수 정의 시

-> 기호는 주로 함수 반환 값의 타입을 명시하는 '함수 어노테이션(Function Annotation)' 용도로 사용되며, 실제 실행에는 영향을 주지 않는 주석의 한 형태입니다.

파이썬 자체는 런타임에 이러한 어노테이션을 강제하지 않지만, 개발자, IDE, 린터(Pylint 등), 정적 타입 검사기(Mypy 등)가 함수의 입력 및 출력의 의도된 타입과 목적을 이해하는 데 유용한 힌트 역할을 합니다.

 

->의 주요 용도

  • 함수 반환 타입 명시 (Function Annotation): def my_function(arg: int) -> str:와 같이 함수의 매개변수 타입(: 사용)과 함께 반환 타입(->)을 지정하여, 이 함수가 정수(int)를 받아 문자열(str)을 반환할 것임을 나타냅니다.
  • 코드 가독성 향상: 정적 타입 검사기(예: Mypy)가 이 정보를 활용하여 코드의 오류를 미리 찾도록 돕고, 다른 개발자도 코드를 더 쉽게 이해하게 만듭니다.
  • 실행에는 영향 없음: 파이썬 인터프리터는 이 ->와 타입 정보를 무시하고 코드를 실행합니다; 이는 주석처럼 취급됩니다. 
# 이 함수는 정수(int)를 받아 정수(int)를 반환합니다.
def add_numbers(a: int, b: int) -> int:
    return a + b

# 이 함수는 문자열을 받아 문자열을 반환합니다.
def greet(name: str) -> str:
    return f"Hello, {name}!"

 

이처럼 ->는 타입 힌팅(Type Hinting)의 일부로, 파이썬 코드의 유지보수성과 안정성을 높이는 데 중요한 역할을 합니다. 

 

 

: 기호는 주로 함수 매개변수에 메타데이터를 첨부하는 '함수 어노테이션(Function Annotation)' 용도로 사용되며, 실제 실행에는 영향을 주지 않는 주석의 한 형태입니다.

이는 코드를 더 읽기 쉽고 이해하기 쉽게 만들기 위해 개발자가 함수의 매개변수가 어떤 자료형을 갖는지 알려주는 역할을 합니다. 

 

 

 

주요 특징:

  • 메타데이터, 강제 적용 아님: 어노테이션은 순수하게 메타데이터를 위한 것이며 실행 중 Python 인터프리터에 의해 강제 적용되지 않습니다. 런타임 오류 없이 어노테이션에 지정된 것과 다른 유형의 인수를 전달할 수 있습니다.
  • 타입 힌트: 어노테이션의 가장 일반적인 사용 사례는 타입 힌트로, 매개변수와 반환 값에 대한 예상 데이터 유형을 지정합니다. 이를 통해 코드 가독성과 유지 관리성이 향상되고 정적 분석이 가능해집니다.
  • 임의 표현식: 어노테이션은 타입 힌트뿐만 아니라 모든 유효한 Python 표현식일 수 있습니다. 이는 유연성과 사용자 정의 사용을 허용하지만, 주된 목적은 타입 힌트입니다.
  • __annotations__ 속성: 어노테이션은 함수의 __annotations__ 속성에 사전으로 저장됩니다. 여기서 키는 매개변수 이름(또는 반환 유형의 경우 'return')이고 값은 어노테이션 표현식입니다.

 


이점:

  • 코드 가독성 및 이해도 향상: 함수가 처리하는 예상 데이터 유형을 명확하게 전달합니다.
  • 향상된 툴 지원: IDE는 주석을 기반으로 더 나은 자동 완성, 오류 검사 및 리팩토링 제안을 제공할 수 있습니다.
  • 정적 타입 검사: Mypy와 같은 툴은 코드를 분석하고 런타임 전에 잠재적인 타입 불일치를 보고하여 오류를 조기에 포착할 수 있습니다.
  • 더 나은 문서화: 주석은 인라인 문서의 한 형태로 사용되어 docstring을 보완합니다.

 

 

 

 

2. 주석

파이썬 함수 주석은 **#**으로 한 줄 주석을 달거나, """ (큰따옴표 3개) 또는 ''' (작은따옴표 3개)로 묶어 여러 줄 주석을 만들며, 함수 바로 아래에 작성하는 **독스트링(Docstring)**은 help()나 자동 완성 기능으로 활용되어 함수의 목적, 매개변수, 반환 값 등을 설명하는 중요한 문서 역할을 합니다. 

 

1. 한 줄 주석
  • # 기호를 사용하며, # 뒤에 오는 모든 내용은 주석으로 처리됩니다. 
 
# 이 줄은 주석입니다.
def my_function(): # 함수 정의 뒤에도 주석 가능
    print("Hello")
2. 여러 줄 주석 (블록 주석)
  • """ 또는 '''로 시작하고 끝내면 그 사이의 모든 내용이 주석 처리됩니다. 코드 블록을 주석 처리할 때 유용합니다.
 
"""
이것은 여러 줄 주석입니다.
여러 줄에 걸쳐 작성할 수 있으며,
코드 블록을 일시적으로 비활성화할 때 사용합니다.
"""
3. 함수 독스트링 (Docstring)
  • 함수 정의 바로 아래에 위치하며, 함수가 무엇을 하는지 설명하는 가장 중요한 주석입니다.
  • help(함수명)으로 보거나 IDE의 자동 완성 기능으로 확인할 수 있습니다.
  • PEP 257 스타일을 따르며, 보통 첫 줄에 요약, 그 아래에 상세 설명, Args:, Returns: 등을 포함합니다. 
 
def add_numbers(a, b):
    """
    두 개의 숫자를 더하여 그 결과를 반환합니다.

    Args:
        a (int): 첫 번째 숫자
        b (int): 두 번째 숫자

    Returns:
        int: 두 숫자의 합
    """
    return a + b

# 사용 예시:
# help(add_numbers) # 독스트링 내용이 출력됨
  • 주석을 작성할 때는 코드의 가독성을 위해 # 뒤에 공백을 한 칸 띄우는 것이 좋습니다.
  • 함수 주석은 코드의 재사용성과 유지보수성을 높여줍니다.