我不知道没有它们我会怎样生活我已经编写Python5年多了,我的工具集通常变得更小,而不是更大。许多工具不是必需的或没有用的,其中一些是简单添加的。这三个是我长期坚持使用的,与其他人不同的是,我只是越来越多地使用它们。秘密武器#1:使用Kite编写代码更快,谷歌时间更少大多数代码编辑器都有一个自动完成功能,看起来像这样:...使用语言(有时是库)文档来建议函数名称和参数内容等内容。当然可以,但是如果您的编辑器可以浏览多年的GitHub数据并自动完成,而不仅仅是函数名称,而是整行代码,那会怎样呢?这只是使用Kite的三个原因中的第一个。原因1:代码行完成Kite检查您的代码库和变量、在线使用的常用参数名称、文档,然后提出超上下文建议,如下所示:上面的示例显示了Kite如何预测您最终会使用像b这样的常用名称或在通用名称中使用的变量,例如x或y。…我们花了大约50年的工程时间对Github上的所有代码进行语义索引,构建统计类型推断,以及非常深入地使用这种语义信息的丰富统计模型。—AdamSmith,Kite创始人/首席执行官这是一个现场演示视频,或者,如果您愿意,可以在沙盒中播放。原因2:文档的副驾驶如果您从未听说过“RTFM”,那么您可能没有犯我的错误。在任何情况下,您都应该在致电高级开发人员甚至查看StackOverflow答案之前阅读文档。KiteCopilot使文档变得简单。它与您的编辑器一起运行,并实时显示您用光标突出显示的任何对象/功能/等的文档。亲爱的高级开发人员,我的第一份工作:抱歉。现在,我真的没有理由不先在文档中寻找答案。原因3:在本地私下运行这一切都基于本地运行,因此您可以获得令人难以置信的快速建议,它可以离线工作,并且您的代码永远不会发送到云端。这对于互联网连接不佳的人和在闭源存储库中工作的人来说非常重要。事实证明,我多年来一直在使用风筝,并且一直在变得越来越好。这家公司投资超过1700万美元,无处不在,而且出于某些愚蠢的原因,该工具是完全免费的。您所要做的就是为您的编辑器下载Kite插件,或者下载Copilot,它将为您安装插件。去做吧(梦想);去拿它(东西!秘密武器2:使用Mypy来稳定你的代码Python是动态类型的,一个过于简单化的解释是你可以随时使任何变量成为任何数据类型(字符串,整数等)。#Thesettwovariabletypesaredeclaredtheexactsameway#Pythonfiguresoutthedatatypeonit'sown,dynamically#stringvar_name="stringhere"#integervar_name=1234相反的是静态类型语言,其中变量必须具有一种特定的数据类型,并且必须始终符合该数据类型。#Manylanguagesrequirethedatatypetobedeclaredtoo#stringstrvar_name="stringhere"#integerintvar_name=1234优点/缺点动态类型动态类型的优点是你可以在写的时候偷懒,它减少了代码的混乱。缺点很多,但也很大:在开发周期的后期,你通常会遇到错误和代码性能会更差,因为Python一直在计算类型函数不稳定,因为它们的输入和输出可以更改数据typeswithoutwarning移交代码会更不稳定,因为其他人可能不知道你的变量是什么数据类型或者可能是PythonTypeMypy中的静态类型。一个免费的Python模块,允许您在Python中使用静态类型。安装mypy后,下面只是一个使用示例:#Declaringafunctionusingnormaldynamictyping,withoutmypydefiter_primes():#codehere#DeclaringthesamefunctionwithmypystatictypingfromtypingimportIteratordefiter_primes()->Iterator[int]:#codehere在mypy示例中,我们指定函数返回一个整数迭代器。通过强制执行一致的输出,这个简单的改变使函数更适应未来的需求。其他开发人员可以简单地查看声明以查看输出的数据类型,与仅使用文档不同,如果不遵守声明,您的代码将出错。这是从此处示例中提取的一个非常简单的示例,如果仍然没有意义,请检查它们。事实证明,很难列出静态类型可以减轻您未来痛苦的所有方式,但mypy文档有一个很好的常见问题解答,其中包含更多优缺点。如果您在稳定性至关重要的生产代码库上工作,一定要试试mypy。秘密武器#3:使用Sonarlint更快地查找错误并编写更简单的函数现在每个编辑器都有某种类型的错误检查或内置“lint”。它查看代码(通常不运行代码)并尝试猜测可能出现的问题。这称为静态代码分析。动态代码分析实际上会尝试运行/编译部分代码以查看其是否正常工作,但它会在后台自动执行。与其猜测,它实际上知道它是否有效以及确切的错误是什么。SonarLint处于最佳状态,是动态代码分析领域的领导者。这些特性是我喜欢它的原因:注释或未调用的代码我对在我的代码库中到处留下打印语句、注释掉的代码和未使用的函数感到内疚。这会警告我,让它难以忘记,并告诉我它在哪里,很容易找到。SecurityRisks将一个巨大的、不断更新的安全风险数据库实时地放入您的代码库中,警告您可能面临的任何已知漏洞。安全隐患小到记不住,所以大家应该用一些方法来记住它们。SonarLint是一个很好的起点。从未执行的代码与未调用的代码略有不同,如果无法达到我创建的评估结果,它会警告我。这些问题很难发现,并且可能需要数小时的调试时间,因此这是我最喜欢的警告之一。这是一个例子:a=Noneifa==Noneornotaora:this_will_always_get_called()else:#sonarlintwillwarnyouaboutthislineneverbeingexecutedthis_will_never_get_called()认知复杂性我可以写一整篇关于它的文章,这是一个非常有趣的话题,事实上,有一整篇白皮书。简单的解释是,他们创建了一个数学公式来对阅读/理解代码的难度进行分级。它不仅非常有用,而且易于遵循。每当SonarLint要求我“降低认知复杂性”时,它都会附带一条关于我违反的规则的简单注释,例如“太多嵌套的if语句”。事实证明,我发现这比基本的阻塞和linting实践更有用,我相信它促使我编写了人性化的代码。顺便说一下,它是Pythonic的!SonarLint是免费的,因此没有理由不立即获取它并将其附加到您的编辑器中。结论如果您跳过此处,这只是一个快速警告,除非您对这些功能有基本的了解,否则您可能无法正确使用它们。以下是三个秘诀的概述:使用KiteCopilot和编辑器插件更快地编写Google内容使用MypyPython模块稳定您的代码使用SonarLint编辑器插件更快地查找错误并编写更简单的函数希望这些工具对您有用好东西,我真的很喜欢他们自己。我敢肯定还有一些我错过的其他令人难以置信的资源,所以请务必在评论中分享你没有的生活。
