파 이 썬 에 유형 표 시 를 어떻게 추가 하 는 지 간단히 말 하 다

파 이 썬 형식 레이 블 추가
Python 은 이렇게 간결 해서 작성 자 는 변 수 를 설명 할 때 유형 을 고려 할 필요 가 없습니다.
그러나 간결 함 과 복잡 함 사이 에는 균형 점 이 존재 한다.우리 가 비교적 복잡 한 프로젝트 를 쓸 때'정적 유형 언어'의 강력 한 유형 검사 와 스마트 한 힌트 를 가지 고 싶 습 니 다.
좋 은 소식 은 TypeScript 처럼 새로운 컴 파일 러 를 도입 하여 JavaScript 에'업그레이드'를 해서 유형 검 사 를 할 필요 가 없다 는 것 입 니 다.Python 이 자체 적 으로 가지 고 있 는 typing 도 구 는 어느 정도 에 Python 을'정적 형식 언어'로 바 꿀 수 있 습 니 다.나 쁜 소식 은 Python 은 결국'정적 유형 언어'가 아니 라 나의 간단 한 테스트 를 통 해 그 코드 는'자 유 롭 고 느슨 하 다'는 것 이다.
Python 에 형식 표시
우선 독자 들 에 게 우리 의 실험 환경 을 성명 하 다.

❯ python --version
Python 3.7.0
본 고 는 Python 3.7 의중국어 문서를 참고 하 였 다.
우 리 는 다음 과 같은 방식 으로 변 수 를 설명 합 니 다.

a: int = 1
b: float = .2
print(f'{a}, {b}')  # 1, 0.2
안 타 깝 게 도 Python 에서a: int = 1이 말 은 의미 가 없다.직 설 적 으로 말 하면'바지 벗 고 방귀 뀌 기'다.잘 들 어 라.파 이 썬 의 유형 표 시 를 여기에 두 고 이렇게 쓸 필 요 는 전혀 없다.
우선,a = 1에서 해석 기 는aint유형 으로 자동 으로 추정 합 니 다.예 를 들 어 Pylance 와 같은 Language Server 도 우리 가 작성 할 때int방법 으로 보완 합 니 다.

그 밖 에 우리 가a의 유형 을int로 규정 한 후에stra에 부여 하 더 라 도 해석 기와 Language Server 는 전혀 틀 리 지 않 을 것 이다.아래 와 같다.

a: int
a = '1'
print(a)  #    
상술 한 유형 검 사 를 하 는 것 은 현대 컴 파일 링 기술 에 있어 서 는 조금도 어렵 지 않 을 것 이다.그러나 여 기 는 잘못 보고 하지 않 았 고 경고 하지 않 았 다.이것 은 아마도 Python 의 디자인 철학 과 관계 가 있 을 것 이다.
TypeScript 가 어떻게 표현 되 는 지 봅 시다.

TypeScript 는 자신 을 정적 언어 로 생각 하고 글 을 쓸 때 유형의 정확성 을 확보 합 니 다.
타이 핑 사용
비록 Python 은 유형의 정확성 을 강제 적 으로 요구 하지 않 고 강 한 유형 전환 을 자동 으로 도와 주지 만 우 리 는 유형 표시 가 가 져 온 많은 편 의 를 누 릴 수 있 습 니 다.
예 를 들 어,우 리 는 현재 함수foo를 정의 하려 고 합 니 다.함 수 는 목록dogList을 되 돌려 줍 니 다.목록 의 요 소 는 모두 우리 가 정의 한 클래스Dog의 인 스 턴 스 입 니 다.
유형 표시 가 없 으 면 스마트 힌트 를 얻 을 수 없습니다.다음 과 같 습 니 다.

Python 에 서 는List대상 의 요 소 를 요구 하지 않 습 니 다.따라서 해석 기 나 Language Server 도 프로그램 을 한 번 씩 실행 한 다음 에 이 List 에 넣 은 것 이 어떤 유형 인지 추측 하지 않 습 니 다.
자 연 스 럽 게List에서 요 소 를 가 져 올 때(예 를 들 어 상기dogList[0]List에서 당신 이 가 진 요소 가 어떤 유형 인지 알려 줄 수 없고 제시 할 방법 도 없다(No suggestion.).
이것 은 실제 업무 장면 과 일치 하지 않 습 니 다.왜냐하면 우리 가 코드 를 쓸 때 한 목록 에 불 러 오 는 것 은 종종 같은 유형 이기 때 문 입 니 다.원 소 를 채취 할 때 보완 힌트 를 얻 기 위해 서 는typing.List+ 를 사용 할 수 있 습 니 다.아래 와 같다.

우 리 는foo되 돌아 오 는 요 소 는 반드시 하나의List이 고 그 중에서 요소 유형 은Dog유형 이 라 고 규정 한다.그리고 우리dogList[0]Dog유형 으로 인식 되 어 보완 을 받 았 다.편 하 다
똑똑 한 Pylance
사실 Pylance 자신 도 유형 적 인 추 도 를 할 수 있 습 니 다.예 를 들 어 우리 가 생 성 기 를 사용 하여 목록 을 만 들 때 Pylance 는 이 목록 의 요소 가 어떤 유형 에 속 하 는 지 판단 합 니 다.

결어typing의 용법 에 대해 토론 할 만 한 내용 이 많 습 니 다.제 참고 자 료 는 주로 Python 3.7중국어 문서 입력입 니 다.그 밖 에 Python 범 형 으로 함 수 를 다시 불 러 오 는 것 이 정적 유형 언어 에 비해 매우 번 거 로 운 것 같 습 니 다(저 는 참고Python 실 용 보전 의 글(알 겠 습 니 다).만약 에 나중에 제 가 적당 한 장면 을 만나면 성문 으로 공유 할 것 입 니 다.
파 이 썬 에 유형 표 시 를 어떻게 추가 하 는 지 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 에 유형 표시 내용 을 추가 하 는 것 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기