이 기사의 내용은 몇 가지 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
。三足鼎立的局面要被打破了。
pyright 的文档宣称它有如下特点:
Typeshed
우리 모두 알고 있듯이 Python은 동적으로 유형이 지정되는 언어이며 실제 변수 유형은 런타임까지 알 수 없습니다. 이것이 동적 언어의 특징입니다. 그러나 팀워크나 대규모 프로젝트에서는 유지 관리 비용이 불가피합니다. "
역학은 잠시 재미있지만 재구성은 화장터입니다".
이르면 2006년 PEP-3107부터 Python은 함수 주석 기능을 도입했고, 이는 마침내 버전 3.0에서 구현되었습니다. 버전 3.5에서 Python은 정적 유형 검사 구문(예: PEP-484, 유형 힌트)을 계속 도입했습니다. 2014 PEP-483에서는 "The Theory of Type Hints"라는 제목으로 이론적인 요약도 작성했습니다. 이후 PEP-526과 PEP-544가 잇달아 제안되었고, 타입 확인을 위한 사양이 점차 풍부해졌습니다.
유형 검사의 이점은 조기에 확인하고 유형 오류를 사전에 감지하며 코드의 일관성과 유지 관리성을 향상시키는 것입니다. (탈모 방지도 되네요 ㅋㅋㅋ)
rrreeemypy
, Google의 pytype
및 Facebook의 pyre-check
code>라는 세 가지 주요 정적 검사 도구가 있었습니다. 삼족오 상황이 무너지려 하고 있다. 네 가지 유형 검사 도구를 소개한 후 요약 비교는 다음과 같습니다.
성능에 관해서는, 파이라이트가 말했듯이 그 속도가 다른 속도의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!