본문 바로가기
Python/Python FAQ

Python 파이썬 함수 정의에서 ->는 무엇을 의미하는가요?, What does -> mean in Python function definitions?

by 베타코드 2023. 6. 9.
반응형

질문


최근에 Python 3.3 문법 명세를 살펴보면서 흥미로운 것을 발견했습니다:

funcdef: 'def' NAME parameters ['->' test] ':' suite

Python 2에서 선택적인 '화살표' 블록이 없었고 Python 3에서의 의미에 대한 정보를 찾을 수 없었습니다. 그러나 이것은 올바른 Python이며 인터프리터에서도 인식됩니다:

def f(x) -> 123:
    return x

이것이 어떤 종류의 사전 조건 구문일 수도 있다고 생각했지만:

  • 여기서 x를 테스트할 수 없습니다. 아직 정의되지 않았기 때문입니다.
  • 화살표 뒤에 무엇을 넣어도 (예: 2 < 1) 함수 동작에 영향을 미치지 않습니다.

이 구문 스타일에 익숙한 누군가가 설명해 줄 수 있을까요?


답변


이것은 함수 주석입니다.

더 자세히 말하면, Python 2.x에는 메타데이터 문자열을 다양한 유형의 객체에 첨부할 수있는 독스트링이 있습니다. 이것은 놀랍게도 편리합니다. Python 3는 이 기능을 확장하여 함수의 매개 변수 및 반환 값에 대한 메타데이터를 첨부할 수 있도록합니다.

미리 정의 된 사용 사례는 없지만 PEP는 여러 가지를 제안합니다. 매우 편리한 하나는 매개 변수에 예상되는 유형을 주석으로 달 수 있게하는 것입니다. 그러면 주석을 확인하거나 인수를 올바른 유형으로 강제 변환하는 데 사용할 수있는 데코레이터를 쉽게 작성할 수 있습니다. 또 다른 것은 독스트링에 인코딩하는 대신 매개 변수별 문서를 허용하는 것입니다.

반응형

댓글