여러 Python 유형 검사 도구 공유

不言
풀어 주다: 2019-03-27 09:52:48
앞으로
1826명이 탐색했습니다.

이 기사의 내용은 몇 가지 Python 유형 검사 도구를 공유하는 것입니다. 이는 특정 참고 가치가 있습니다. 도움이 필요한 친구가 될 수 있기를 바랍니다.

최근 Microsoft는 Github에 Python 정적 유형 검사 도구인 pyright를 오픈 소스로 공개하여 커뮤니티에서 많은 관심을 받았습니다. pyright ,引起了社区内的多方关注。

微软在开源项目上的参与力度是越来越大了,不说收购 Github 这种大的战略野心,只说它家开源的 VS Code 编辑器,在猿界已经割粉无数,连我们 Python 圈的红人 Kenneth Reitz (多个开源项目的作者,包括 requests、requests-html、responder等)都对它赞不绝口。

如今开源的 Pyright ,口碑还不错,那我们就来看看它有啥本事,顺便再介绍其它几款类型检查工具。

众所周知,Python 是一门动态类型语言,在运行期才知道变量的实际类型。这本就是动态语言的特色,然而在团队合作或大型项目上,维护的代价也不可避免,俗话说的是:“动态一时爽,重构火葬场 ”。

早在 2006 年的 PEP-3107,Python 就推出了函数注解的功能,最终落在 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 之前,主流的静态检查工具有三款:官方的mypy 、Google 出的pytype 、Facebook 出的pyre-check 。三足鼎立的局面要被打破了。

여러 Python 유형 검사 도구 공유

pyright 的文档宣称它有如下特点:

  • 速度快。相较于 mypy 及其它用 Python 写的检查工具,它的速度是 5 倍甚至更多。
  • 不依赖 Python 环境。它用 TypeScript 写成,运行于 node 上,不依赖 Python 环境或第三方包。
  • 可配置性强。支持自由地配置,支持指定不同的运行环境(PYTHONPATH 设置、Python 版本、平台目标)。
  • 检查项齐全。支持类型检查及其它语法项的检查(如 PEP-484、PEP-526、PEP-544),以及函数返回值、类变量、全局变量的检查,甚至可以检查条件循环语句
  • 命令行工具。它包含两个 VS Code 插件:一个命令行工具和一个语言服务器协议(Language Server Protocol)
  • 内置 Stubs 。使用的是 Typeshed
  • Microsoft의 오픈 소스 프로젝트 참여는 점점 더 커지고 있습니다. Github 인수라는 큰 전략적 야망은 말할 것도 없고, Microsoft의 오픈 소스 VS Code 편집기는 이미 유인원 세계의 수많은 팬들을 끌어 모았습니다. 심지어 유명 인사인 Python Kenneth Reitz도 마찬가지입니다. 업계(요청, 요청-html, 응답자 등을 포함한 여러 오픈 소스 프로젝트의 작성자)는 이에 대해 찬사를 보냅니다.
  • 현재 오픈 소스인 Pyright는 좋은 평판을 얻고 있으므로 그 기능을 살펴보고 다른 유형 검사 도구도 몇 가지 소개하겠습니다.

우리 모두 알고 있듯이 Python은 동적으로 유형이 지정되는 언어이며 실제 변수 유형은 런타임까지 알 수 없습니다. 이것이 동적 언어의 특징입니다. 그러나 팀워크나 대규모 프로젝트에서는 유지 관리 비용이 불가피합니다. "

역학은 잠시 재미있지만 재구성은 화장터입니다

".

이르면 2006년 PEP-3107부터 Python은 함수 주석 기능을 도입했고, 이는 마침내 버전 3.0에서 구현되었습니다. 버전 3.5에서 Python은 정적 유형 검사 구문(예: PEP-484, 유형 힌트)을 계속 도입했습니다. 2014 PEP-483에서는 "The Theory of Type Hints"라는 제목으로 이론적인 요약도 작성했습니다. 이후 PEP-526과 PEP-544가 잇달아 제안되었고, 타입 확인을 위한 사양이 점차 풍부해졌습니다.

유형 검사의 이점은 조기에 확인하고 유형 오류를 사전에 감지하며 코드의 일관성과 유지 관리성을 향상시키는 것입니다. (탈모 방지도 되네요 ㅋㅋㅋ)

rrreee
    위의 예에서 보듯이 체크를 추가하면 입력 매개변수와 반환 값이 문자열 타입인지 컴파일 타임에 판별할 수 있습니다.
  • Microsoft가 pyright를 출시하기 전에는 공식 mypy, Google의 pytype 및 Facebook의 pyre-checkcode>라는 세 가지 주요 정적 검사 도구가 있었습니다. 삼족오 상황이 무너지려 하고 있다.
  • 2962420651-5555284b _. <li>pyright의 문서에는 다음과 같은 기능이 있다고 주장합니다: </li></ul><p>빠른 속도. Python으로 작성된 mypy 및 기타 검사 도구와 비교하면 5배 이상 빠릅니다. <strong></strong>Python 환경에 의존하지 않습니다. TypeScript로 작성되고 노드에서 실행되며 Python 환경이나 타사 패키지에 의존하지 않습니다. </p><p> 고도로 구성 가능합니다. 무료 구성을 지원하고 다양한 실행 환경(PYTHONPATH 설정, Python 버전, 플랫폼 대상) 지정을 지원합니다. </p><p>검사 항목이 완료되었습니다. 유형 검사 및 기타 구문 항목(예: PEP-484, PEP-526, PEP-544) 검사는 물론 함수 반환 값, 클래스 변수, 전역 변수 및 조건 루프 문 검사도 지원합니다</p><p>명령줄 도구 . 여기에는 명령줄 도구와 언어 서버 프로토콜</p>🎜내장 스텁이라는 두 가지 VS Code 플러그인이 포함되어 있습니다. <code>Typeshed</code>의 복사본이 사용됩니다. (참고: 정적 pii 파일을 사용하고 내장 모듈, 표준 라이브러리 및 타사 구성 요소를 확인하세요.) 🎜🎜언어 서비스 기능. 호버 프롬프트 정보, 기호 정의 점프, 실시간 편집 피드백🎜🎜🎜 이런 점에서는 강력하지 않습니다. 사실, 파이라이트는 pyre-check 또 다른 하이라이트는 특정 줄의 표현식 유형 쿼리, 클래스의 모든 메서드 쿼리 및 반환과 같은 소스 코드에 대한 로컬 및 지역 검사를 수행할 수 있는 쿼리 매개변수가 있다는 것입니다. 잠깐만요. 이렇게 하면 전체 검사가 필요하지 않습니다.

    네 가지 유형 검사 도구를 소개한 후 요약 비교는 다음과 같습니다.

    여러 Python 유형 검사 도구 공유

    성능에 관해서는, 파이라이트가 말했듯이 그 속도가 다른 속도의 5배라는 것이 사실인가요? 관심 있는 학생들은 시도해 볼 수 있습니다. 혹시 사용해보신 경험이 있으신 분은 메시지를 남겨주시면 연락드리겠습니다.

    프로젝트 주소:

    https://github.com/python/mypy, https://github.com/Microsoft/pyright , https://github.com/google/pytype, https://github.com/facebook/pyre-check

    이 기사는 여기까지입니다. 다른 흥미로운 콘텐츠도 더 많이 있습니다. 팔로우할 수 있습니다. PHP 중국어 웹사이트의 python 비디오 튜토리얼 컬럼!

위 내용은 여러 Python 유형 검사 도구 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!