python 형식 검사 도구 pyright 소개(추천)

4393 단어 pythonpyright
최근 마이크로소프트 는 Github 에서 Python 정적 유형 검사 도 구 를 개 원 했 습 니 다.pyright 는 지역 사회 에서 많은 관심 을 끌 었 습 니 다.
마이크로소프트 가 오픈 소스 프로젝트 에 참여 하 는 힘 이 점점 커지 고 있다.Github 을 인수 하 는 큰 전략 적 야심 은 말 할 것 도 없고 그의 집에 서 오픈 소스 된 VS Code 편집기 만 말 할 것 이다.원숭이 계 에서 수많은 분 을 잘 랐 고 우리 Python 권 의 인기 있 는 사람 인 Kenneth Reitz(여러 개의 오픈 소스 프로젝트 의 작가,requests,requests-html,responder 등)도 이에 대해 칭찬 을 아 끼 지 않 았 다.
지금 시 작 된 Pyright 는 입 소문 이 좋 습 니 다.어떤 능력 이 있 는 지 살 펴 보 겠 습 니 다.그리고 다른 몇 가지 유형의 검사 도 구 를 소개 하 겠 습 니 다.
모두 가 알다 시 피 Python 은 동적 유형 언어 로 실행 기간 에 야 변수의 실제 유형 을 알 수 있다.이것 은 바로 동태 적 언어의 특색 이지 만 팀워크 나 대형 프로젝트 에서 유지 하 는 대가 도 불가피 하 다.속담 에'동태 가 일시 적 으로 시원 하고 화장 장 을 재 구성 하 는 것'이 라 고 한다.
파 이 썬 은 이미 2006 년 PEP-3107 에서 함수 주해 기능 을 출시 해 3.0 버 전 으로 떨 어 졌 다.그리고 3.5 버 전에 서 Python 은 정적 유형 검사 의 문법(즉,PEP-484,type hints)을 계속 도입 했다.2014 년 의 PEP-483 은'The Theory of Type Hints'라 는 제목 으로 이론 적 으로 요약 했다.이후 PEP-526,PEP-544 가 속속 제 기 돼 유형 검사 의 규범 이 다양 해 졌 다.
유형 검사 의 장점 은 일찍 검사 하고 유형의 오 류 를 미리 발견 하여 코드 의 일치 성과 유지 가능성 을 강화 하 는 것 이다.(그리고 탈모 방지,야옹)

#     
def greeting(name):
  return 'Hello ' + name
 
#     
def greeting(name: str) -> str:
  return 'Hello ' + name
상례 에서 보 듯 이 검 사 를 추가 하면 컴 파일 기간 에 입력 과 반환 값 이 문자열 형식 인지 판단 할 수 있 습 니 다.예 를 들 어 다음 그림:

마이크로소프트 가 pyright 를 출시 하기 전에 주류 의 정적 검사 도 구 는 세 가지 가 있 습 니 다.공식 my py,구 글 에서 나 온 pytype,페 이 스 북 에서 나 온 pyre-check 입 니 다.세 세력 이 정립 하 는 국면 이 깨 질 것 이다.
pyright 문 서 는 다음 과 같은 특징 이 있다 고 선언 합 니 다.
  • 속도 가 빠르다.my py 및 기타 Python 으로 쓴 검사 도구 에 비해 속 도 는 5 배,심지어 더 많 습 니 다.
  • 은 Python 환경 에 의존 하지 않 습 니 다.이것 은 TypeScript 로 node 에서 실행 되 며 Python 환경 이나 제3자 패키지 에 의존 하지 않 습 니 다.
  • 배치 성 이 강하 다.자 유 롭 게 설정 할 수 있 고 서로 다른 실행 환경(PYTHONPATH 설정,Python 버 전,플랫폼 목표)을 지정 할 수 있 습 니 다.
  • 검사 항목 이 완비 되 어 있다.유형 검사 및 기타 문법 항목 검사 지원(예 를 들 어 PEP-484,PEP-526,PEP-544)및 함수 반환 값,클래스 변수,전역 변수 검사,조건 순환 문
  • 까지 검사 할 수 있 습 니 다.
  • 명령 행 도구.이것 은 두 개의 VS Code 플러그 인 을 포함 합 니 다.명령 행 도구 와 언어 서버 프로 토 콜(Language Server Protocol)
  • 에 Stubs 가 내장 되 어 있 습 니 다.Typeshed 의 복사 본 을 사용 합 니 다.(주:정적 pyi 파일 을 사용 하여 내 장 된 모듈,표준 라 이브 러 리,3 자 확인)
  • 언어 서비스 특성.서 스 펜 션 알림 정보,기호 정의 의 도약,실시 간 편집 피드백
  • 그런 의미 에서 강하 지 않다 고 할 수 는 없다.사실 pyright 는"거인 의 어깨 위 에 서 있다"며 다양한 기능 을 다른 선배 들 에 게 물 려 받 은 것 같다.
    이 어 공식 마 이 피 를 보면'Python 의 아버지'Guido van Rossum 이 직접 개발 에 참여 하 는 것 이 가장 주류 의 선택 이 고 일찍 출시 되 며 사용자 기수 가 많 고 문서 와 지역사회 경험 도 가장 풍부 하 다.
    통합 IDE 의 경우 모든 주류 편집기 가 지원 합 니 다.PyCharm,Vim,Emacs,Sublime Text,VS Code,Atom.
    이 어 구 글 의 pytype 을 살 펴 보 자.문서 에 따 르 면 다음 과 같다.
  • 태그 의 일반적인 오류,예 를 들 어 맞 춤 법 오류,함수 호출 오류
  • 사용자 정의 유형 주 해 를 강화 합 니 다
  • pyi 파일 생 성 형식 에 대한 설명
  • 지원
    문 서 를 보 니'오류 소음 감소'라 는 기능 이 있 습 니 다.수정 할 필요 가 없 는 오류 에 대해 설명 을 추가 하여 유형 검 사 를 없 앨 수 있 습 니 다.
    그 밖 에 또 하나의 고려 도 좋 습 니 다.유형 검 사 를 쓰기 위해 모듈 에 다른 모듈 을 추가 로 도입 할 수 있 습 니 다.후자 에 대해 pytype 은 이 를 숨 길 방법 이 있 고 유형 검 사 를 할 때 만 불 러 옵 니 다.
    마지막 으로 페 이 스 북 의 pyre-check 을 소개 하 겠 습 니 다.작년 에 시 작 된 것 이 고 호평 도 받 았 습 니 다.
    기본 적 인 기능 점 은 대동소이 하지만 그것 도 하 이 라이트 가 있다.pyre-check 은 Watchman 모듈 을 통합 할 수 있 습 니 다.이'관찰자'는 코드 파일 을 감청 하고 수정 사항 을 추적 합 니 다.마이크로소프트 의 pyright 는 watch 모드 가 있 습 니 다.이 점 을 흡수 하고 더 좋 을 것 입 니 다.(Watchman 과 다른 의존 을 추가 로 설치 할 필요 가 없 기 때 문 입 니 다)
    pyre-check 에는 또 하나의 하 이 라이트 가 있 습 니 다.query 매개 변 수 는 원본 코드 에 대해 부분 적 인 지역 적 검 사 를 할 수 있 습 니 다.예 를 들 어 특정한 줄 의 표현 식 유형 을 조회 하고 하나의 유형의 모든 방법 을 조회 하 며 목록 으로 돌아 가 는 등 전면적 인 검 사 를 피 할 수 있 습 니 다.
    4 가지 유형 검사 도구 소개 가 끝 났 습 니 다.다음은 개요 대비 입 니 다.

    그들의 성능 은 어 떻 습 니까?pyright 가 말 한 것 처럼 속 도 는 다른 몇 개의 5 배 입 니까?관심 있 는 친구 들 은 한번 해 보 세 요.사용 소감 이 있 으 시 면 댓 글 을 남 겨 주세요.
     항목 주소:
    https://github.com/python/mypy
    https://github.com/Microsoft/pyright
    https://github.com/google/pytype
    https://github.com/facebook/pyre-check
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기