인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

형빈님의 프로필 이미지
형빈

작성한 질문수

Python을 활용한 AWS FinOps 어플리케이션 제작

1.2. AWS API 동작 방식

AWS API 동작 방식에서 type 질문

해결된 질문

작성

·

79

1

안녕하세요

파이썬은 자바와 달리 동적 프로그래밍이라 타입을 지정하지 않고 지정해줘도 강제성은 없다는 정도만 알고 있었는데요.

강의처럼 import해서 type을 지정해주는게 가독성이나 유지보수, 테스트같은 부분에서 유용하기 때문에 해주는건가요?

강의 예시로 volume create, delete, describe처럼 하나의 메서드마다 type을 지정해주는게... 뭔가 개인적으론 더 가독성이 떨어진다고 느껴집니다. (아직 파이썬을 깊게 다루지 않아서 그런거 같긴 하지만)

실무에서 파이썬으로 프로그래밍을 할 때, type을 명시해주는 특정 경우나 범위가 있을까요?
ex) 여러 타입을 리턴하는 함수만 type 지정

답변 1

0

천강민님의 프로필 이미지
천강민
지식공유자

안녕하세요.

답변 먼저 드리면, 정해진건 없습니다. 하지만! 모두 지정해주는게 좋은 것 같습니다.

크게 두 가지 케이스로 살펴보면,

  1. mypy_boto3_ec2 같은 것들을 설치해서 활용하는 경우

    1. 사실 굳이 타입을 명시하지 않아도 개발 과정에서는 쉽게 확인이 가능 합니다.

    2. 그럼에도 명시적으로 작성해준 이유는 아래와 같은데요.

      1. 강의 기준으로만 보면, 이후에 타입을 활용할것이기 때문이구요.

      2. 실무 기준으로는,

        1. 누군가는 mypy_boto3를 활용하지 않을 수도 있어 설치할 수 밖에 없게 만드는 역할을 할 수 있구요.

        2. 굳이 직접 문서를 찾아보지 않아도, 타입을 쫓아가면 바로 어떤 값들이 있고 어떤 값들이 선택적인지 필수인지 등을 확인할 수 있는 장점이 있습니다.

  2. 커스텀(?) 데이터를 만드는 경우

    1. 타입이 없으면 코드를 만지기가 상당히 까다롭습니다.(다루는 데이터가 어떤 형태인지를 떠나서)

    2. 그렇기에 명확히 정의를 해놓으면 당연히 여러 사람이 작업하는데는 큰 도움이 되겠죠.

그리고 타입을 명시해주는 특정 경우나 범위 같은건 딱히 없습니다만, 정말 간단한게 아니면 어쨋든 명시해주는게 좋다고 생각하긴 합니다.(협업을 위해서이기도 하지만, 시간 조금만 지나면 스스로도 까먹기 때문에...)

image엄청 간단하고 당연히 추론해줘야 하는 것 같은 코드들도 이렇게 추론을 잘 못하는 경우가 있거든요.

어찌됐건 강제성은 없기 때문에 프로그래밍 하는 사람 마음이긴 하지만, 링크의 코드를(잘했다 못했다의 문제는 아닙니다. 비하 의도 절대 없습니다.) 인수인계 받아서 업그레이드하거나 버그가 발생해서 유지보수 해야된다고 생각해보면 코드가 길지 않음에도 불구하고 저 개인적으론 상당히 만지기가 꺼려질 것 같긴합니다.(근데 500줄 1000줄 작성한게 타입이 없다고 생각하면 끔직하겠죠...?)

결론은! 규칙도 없고 지정하던 말던 상관없지만, 다른 사람들 그리고 나를 위해서 모두 지정해주는게 좋은 것 같습니다.

형빈님의 프로필 이미지
형빈

작성한 질문수

질문하기