作为一名写了5年Python的工程师,我发现我们的工具集一直在变小,而不是变大。

很多工具都是不必要或无用的,而其中有一些工具你将完全无法使用。 但是,这三个工具集,是我坚持使用了最长时间的。

秘密武器1:使用Kite可以更快地编写代码,减少Google搜索时间

大多数代码编辑器都具有如下自动完成功能:

它使用语言(有时还有库)文档来建议函数名和参数之类的东西。

这当然没关系,但如果你的编辑器可以浏览多年的GitHub数据,并自动完成不仅仅是函数名,而是整行代码,那就很完美了。

这只是你应该使用Kite的三个理由中的第一个。

原因1:完善代码行

Kite查看您的代码库和变量、常用的在线参数名、文档,然后提出符合上下文的建议:

上面的例子展示了Kite如何预测哪一个变量你将使用哪一个,哪怕它们是一般命名的(比如b)或者使用通用名称(比如x或者y)。

我们花了大约50年的时间在Github上对所有代码进行语义索引,构建统计类型推断,以及以非常深入的方式使用这些语义信息的丰富统计模型。——Kite创始人兼首席执行官Adam Smith

原因2:Copilot进行文档编制

如果你从未听说过“ RTFM”,那可能是因为你还没有犯过我的错误。

无论如何,高级开发人员在发现bug或查看Stack Overflow的问题之前,我们应该要阅读官方文档。

Kite Copilot使文档更容易被读懂。 它与你的编辑器一起运行,并实时显示你用光标突出显示的任何对象/功能/等的文档。

从我的第一份工作到现在,我真的没有借口不首先在文档中寻找答案。

原因3:在本地运行

它是在本地运行的所有基础之上,因此你能很快得到令人难以置信的建议,它可以脱机工作,并且你的代码永远不会发送到云中。

对于互联网较差的人和在封闭源代码库中工作的人们来说,这是非常重要的。

结果

我使用 Kite 已有多年了,而且一直在不断改进。而且该工具在拿到投资后,一直是免费的。

你所要做的就是为你的编辑器下载Kite插件,或者下载Copilot,它可以为你安装插件。下载链接在这里:https://kite.com/?ref=pbadeer

秘密武器2:使用Mypy稳定你的代码

Python是动态类型的,一个过分简化的解释是你可以随时将任何变量设为任何数据类型(字符串,整数等)。

# 这两种变量类型的声明方式完全相同
#Python动态地自行找出数据类型
# string
var_name = "string here"
# integer
var_name = 1234

相反的是静态类型的语言,其中的变量必须有一个特定的数据类型,并且始终遵循它。

# 许多语言也要求声明数据类型
# string
str var_name = "string here"
# integer
int var_name = 1234

动态键入的利弊

动态类型的优点是,在编写时可以很懒,并且可以减少代码混乱。

但缺点是很多而且很大:

  • 通常在开发周期的后期会遇到错误
  • 由于Python不断地计算类型,代码的性能更差
  • 函数不太稳定,因为它们的输入和输出可以在没有警告的情况下更改数据类型
  • 由于其他人可能不知道您的变量是或可能成为什么样的数据类型,因此传递代码的稳定性要高得多

Python中的静态类型

输入Mypy。一个免费的Python模块,允许你在Python内部使用静态类型。

在 pip install mypy 之后,下面是一个如何使用它的示例:

# 使用普通动态类型声明函数,不使用mypy
def iter_primes():# 此处输入代码
# 用mypy静态类型声明相同的函数
from typing import Iterator
def iter_primes() -> Iterator[int]:# code here

在mypy示例中,我们指定函数返回整数迭代器。这个简单的更改通过强制一个一致的输出使这个函数更加经得起未来的检验。

其他开发人员只需查看声明就可以看到输出的数据类型,与仅使用文档不同的是,如果不遵守该声明,你的代码将出错。

这是从这里的例子中提取的一个超级简单的例子,如果仍然没有意义,去看看它们。

案例地址:http://www.mypy-lang.org/examples.html

秘密武器3:使用Sonarlint快速查找错误并编写更简单的函数

现在每个编辑器都有某种类型的错误检查或“linter”内置。它查看代码,通常不运行它,并试图猜测可能出了什么问题。这称为静态代码分析。

VS代码中的默认Python Linter

动态代码分析实际上试图运行/编译部分代码以查看其是否正常工作,但它是在后台自动执行的。事实上,它并不猜测,而是知道它是否有效,以及确切的错误是什么。

SonarLint是动态代码分析的最佳选择,还有更多。这些特点是我喜欢它的原因:

注释或未调用的代码

我犯了把打印语句、注释掉的代码和未使用的函数放在我的代码库中的错误。这会警告我,让我很难忘记,告诉我它在哪里,让它很容易找到。

风险非常小

一个包含不断更新的安全风险的巨大数据库实时地抛出到代码库中,你所暴露的任何已知漏洞都会发出警告。

风险非常小,不可能记住,所以每个人都应该使用一些东西来跟踪这些风险。声纳林是一个很好的开始。

从未执行过的代码

与未调用的代码稍有不同,这将提示我是否创建了任何结果无法达到的计算。这些在写代码的过程中是很难发现,可能导致需要数小时的调试,所以这是我最喜欢的功能之一。

下面是一个例子:

a = None
if a == None or not a or a:this_will_always_get_called()
else:# sonarlint会警告您此行永远不会执行this_will_never_get_called()

认知复杂性

简单的解释是,他们已经创建了一个数学公式,可以计算出阅读/理解代码的难度。

它不仅非常有用,而且很容易理解。每次SonarLint要求我“降低认知复杂度”时,都会附带一个简单的规则解释,比如“嵌套的if语句太多”。

结果

我发现这比基本的阻塞和 linting 实践更有用,而且我确信这会使我编写更人性化的代码。顺便说一下,这是Pythonic!

SonarLint是免费的,所以没有理由不现在就抓住它并将其添加到编辑器上。

结论

如果您跳过这里,只需快速警告,除非您对这些功能有基本的了解,否则可能无法正确使用这些功能。

以下是三种秘密武器的概述:

  • 使用Kite Copilot和Editor插件,编写速度更快,减少使用Google搜索使用次数
  • 使用Mypy Python模块稳定代码
  • 使用SonarLint编辑器插件快速查找错误并编写更简单的函数

希望这些工具能很好地为你服务,超级好用的3个工具。

文源网络,仅供学习之用,侵删。

在学习Python的道路上肯定会遇见困难,别慌,我这里有一套学习资料,包含40+本电子书,800+个教学视频,涉及Python基础、爬虫、框架、数据分析、机器学习等,不怕你学不会! https://shimo.im/docs/JWCghr8prjCVCxxK/ 《Python学习资料》

关注公众号【Python圈子】,优质文章每日送达。

减少谷歌搜索使用次数!你知道这3个Python秘密武器吗?相关推荐

  1. 谷歌搜索,揭示人性最黑暗的5个秘密

    <卫报>网站发布文章指出,我们能够从我们在网上问的问题获得对自己更多的了解呢.美国数据科学家塞斯·斯蒂芬斯-大卫多维茨(Seth Stephens-Davidowitz)通过分析谷歌的匿名 ...

  2. 谷歌搜索将于 2019 年年底停止索引任何 Flash 内容

    周一,谷歌宣布谷歌搜索将不再支持 Flash,这意味着谷歌搜索将不再索引 Flash SWF 文件中的内容,无论是在完全使用 Flash 设计的网站上,还是包含 Flash 内容的网页,谷歌搜索会自动 ...

  3. 谷歌搜索网站流量_Google搜索升级使网站更难赢得流量

    谷歌搜索网站流量 By Gerrit De Vynck 杰里特·德温克(Gerrit De Vynck) Type a query into the Google search bar on a sm ...

  4. 谷歌搜索的灵魂!BERT模型的崛起与荣耀

    本文转载自 智东西 刷榜各NLP任务.超70种语言搜索,起底搜索帝国谷歌的"引擎工程师"BERT! 如果你在谷歌上搜索"如何在没有马路的山上停车",谷歌会告诉你 ...

  5. [图文讲解]强大的谷歌搜索技巧,百度360搜狗什么的就是渣渣

    首先推荐篇关于谷歌搜索的大体文章给大家看看,望大家对谷歌搜索有个初步的印象和了解 谷歌免翻墙地址: 请戳我吧,我是传送门 善用GOOGLE  --  從入門到精通 (DOC 簡體字版由網站下載,原作者 ...

  6. 谷歌搜索揭示人性最黑暗的秘密

    全世界只有3.14 % 的人关注了 数据与算法之美 <卫报>网站发布文章指出,我们能够从我们在网上问的问题获得对自己更多的了解呢.美国数据科学家塞斯·斯蒂芬斯-大卫多维茨(Seth Ste ...

  7. siri为什么比谷歌搜索“笨”?

    刚在谷歌开发者大会上正式发布的Android 4.1版本Jelly Bean做了不少更新,其语音搜索更是被人看着是谷歌专门针对苹果Siri研发的.这不,有好事者对两者进行了对比实验,硬是将两者比出了个 ...

  8. 99% 的人都不知道的20 个关于谷歌搜索的技巧

    来源 | https://betterhumans.pub/20-googling-tricks-99-of-people-dont-know-about-465ba0477bec 谷歌不再是一家公司 ...

  9. 谷歌搜索:几乎所有的英文搜索都用上BERT了

    点击上方"视学算法",选择"星标"公众号 第一时间获取价值内容 来自:机器之心 在前段时间举办的「Search On」活动中,谷歌宣布,BERT 现在几乎为谷歌 ...

最新文章

  1. JAVA基础10-继承(1)
  2. 稳扎稳打Silverlight(29) - 2.0Tip/Trick之Cookie, 自定义字体, 为程序传递参数, 自定义鼠标右键...
  3. R语言与概率统计(六) 主成分分析 因子分析
  4. Hibernate 关联映射 之 多对多 关联(一)
  5. 晒一下MAC下终端颜色配置
  6. Shell 变量的操作方法
  7. C# 常用接口学习 IEnumerableT
  8. vue项目安装less_部署vue项目、安装mongodb
  9. MapReduce多用户任务调度器——容量调度器(Capacity Scheduler)原理和源码研究
  10. (二十六)java版spring cloud+spring boot 社交电子商务平台-Eureka介绍
  11. storm发布jar包时报找不到主类_咖啡5元一大包,进口饼干10元3包…济南有个临期食品超市,快过期的食品你会买单吗...
  12. mixly编程怎样音乐_Mixly编程之MP3模块的使用方法
  13. 江诗丹顿 VACHERON CONSTANTIN
  14. .net core增强工作流组件,基于稳定平台,多项目整合开发
  15. 向NS2中添加协议PING
  16. 算法系列之十八:用天文方法计算二十四节气(下)
  17. OpenGL颜色渐变
  18. c语言对随机数进行快速排序,C语言快速排序与二分查找算法示例
  19. 使用PHP提取视频网站页面中的FLASH地址
  20. 2020年8月试题分析-计算机网络原理

热门文章

  1. Verilog实现IIC协议读写EEPROM
  2. 开源 java CMS - FreeCMS2.4 统计分析
  3. Java中字符串为什么不以\0结尾
  4. RedShift: Transparent SNARKs from List Polynomial Commitments学习笔记
  5. oracle10g SGA
  6. 数字图像处理基础(冈萨雷斯)一
  7. 3 链表(LinkedList)
  8. img图片转码base64使用(简单版)
  9. 7.2 Java(农夫果园【3】:一个农场,专门种植销售各类水果,在这个系统中需要描述下列水果葡萄、草莓、苹果)
  10. PHP中常见的设计模式