반응형
질문
최근에 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는 여러 가지를 제안합니다. 매우 편리한 하나는 매개 변수에 예상되는 유형을 주석으로 달 수 있게하는 것입니다. 그러면 주석을 확인하거나 인수를 올바른 유형으로 강제 변환하는 데 사용할 수있는 데코레이터를 쉽게 작성할 수 있습니다. 또 다른 것은 독스트링에 인코딩하는 대신 매개 변수별 문서를 허용하는 것입니다.
반응형
댓글