当前位置: 首页 > 科技观察

五年揭开Python的三个秘密!日常生活必备秘密武器

时间:2023-03-13 22:10:23 科技观察

本文转载自公众号《阅读芯》(ID:AI_Discovery)作者写Python代码5年多。这么久了,工具集并没有变大,反而越来越小了。工具不多,只要好用就行。这三种方法笔者已经使用了很长时间。与其他方法不同,使用它们的频率只会增加。你应得的!1.秘密武器#1:快速编码,少用Kite大多数谷歌的代码编辑器都有这样的自动完成功能,...使用某种语言(库)文档来指示函数名称和参数:这不难,但是什么如果编辑器可以浏览多年的GitHub数据并自动完成不仅是函数名称,还可以自动完成整行代码?这只是使用Kite的第一个原因。原因一:代码行填充Kite访问代码库和各种变量,常用的在线参数名和文档后,会输出高质量的上下文建议:来源:Kitedocs上面的例子展示了Kite是如何预测what的编码人员需要使用变量,即使它们通常被命名(如b),或更常见的命名(如x或y)。“我们在Github上花费了50多年的时间对所有代码进行语义索引,构建统计类型推断,以及深入使用这种语义信息的丰富统计模型,”Kite创始人兼首席执行官AdamSmith说。原因2:在本地和私下运行最重要的是,它在本地运行,因此您可以快速获得提示,离线工作,并且代码不会发送到云端。这对于网络条件异常和使用封闭源代码存储库的人来说非常重要。原因3:文档编程助手如果您从未听说过“RTFM”一词,那可能是因为您没有与第一代开发人员打过交道。值得向高级开发人员寻求建议,甚至在去StackOverflow寻找答案之前阅读文档。KiteCopilot使文档变得非常简单,它与编辑器并发运行,并实时显示文档中光标经过的任何对象/功能等。事实证明我多年来一直在使用Kite,而且它变得越来越好。凭借超过1700万美元的投资,它不会轻易失败,而且它的工具是完全免费的。编辑器只需要下载Kite插件,或者下载copilot(编码助手)安装插件即可。2.秘密武器#2:用Mypy校验代码?CodingPython是动态的,简单的解释就是:coder可以随时将任何变量转换成任何数据类型(字符串、整数等)。#Thesetwovariabletypesaredeclaredtheexactsameway#Pythonfiguresoutthedatatypeonit'sown,dynamically#stringvar_name="stringhere"#integervar_name=1234相反的是静态类型语言,其中它的变量必须有一个特定的数据类型,并且始终遵守它。#许多语言也需要声明数据类型#stringstrvar_name="stringhere"#integerintvar_name=12341。动态编码的优点/缺点动态编码的优点是可以偷懒,减少乱码。但它的缺点很多而且不小:经常在开发周期的后期出现错误编码效率较低,因为Python不断计算类型会更不稳定,因为它们的输入和输出可以在没有警告的情况下更改数据类型2.Python中的静态类型打开Mypy,一个免费的Python模块,可让您在Python中静态编码。发出pipinstallmypy命令后,以下是其使用示例:函数返回一个整数。通过强制执行一致的输出,这个简单的更改使函数更具可预测性。其他开发人员不只是使用文档,而是查看将输出的数据类型,如果该定义不符合,代码就会出错。3.结果很难列出静态类型可以帮助您减轻未来痛苦的所有方式,但mypy文档具有出色的回答常见问题的能力,具有许多优点和缺点。如果您在稳定性是重中之重的代码生产库上工作,一定要试试myby。3.秘密武器#3:使用Sonarlint快速查找错误并编写更简单的函数来预测可能的错误。这是静态代码分析。VSCode中默认的PythonLinter动态代码分析实际上会尝试运行/编译代码的某些部分以查看其是否正常工作,但它会在后台自动执行此操作。它不是猜测,它实际上知道代码是否会出错,并且确切地知道它是什么。SonarLint在动态代码分析方面是最好的,并且有很多优点:1.带注释或未命名的代码作者对充满输出定义、带注释的代码和未使用的函数的代码库感到非常内疚。但这就是让您保持警觉、印象深刻并且易于查找的原因。2.不执行命令代码与未命名代码略有不同,因为不执行命令代码会在创建不可能的评估时警告编码人员。这是非常必要的,否则会导致调试数小时,这是我最喜欢的警告之一。示例:a=Noneifa==Noneornotaora:this_will_always_get_called()其他:#sonarlintwillwarnyouaboutthislineneverbeingecutedthis_will_never_get_called()3。安全风险代码库中庞大的数据库会不断实时更新安全风险,对用户面临的任何已知漏洞风险进行预警。安全风险问题属于小概率事件,基本不可能给我们留下印象。因此,每个人都应该行动起来以保持跟踪。SonarLint是一个很好的起点。资料来源:unsplash4。认知复杂性这个话题非常有趣,我可以就它写一整篇文章。简单的解释是有人创建了一个数学公式来对代码的阅读/理解难易程度进行评分。它非常有用且易于理解。每次SonarLint要求coder“降低认知复杂度”时,都会简单的解释coder的不规范操作,比如“undefined,nestedexception”。5.结果,作者发现这比基本的masking和lint练习更有用,coder也可以写出更人性化的代码。这是Pythonic!!与其激动不如行动,赶快使用吧!