五年Python三大秘诀!日常生活不可或缺的秘密武器
云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
大浪淘沙沉者为金。笔者编写Python代码已经5年多了,经历这么久,工具集没有变大,反而越来越小。工具不在多,好用就行。这三种方法笔者已经坚持使用了很长时间,和其他方法不同的是,使用它们的频率只增不减。你值得拥有!
秘密武器#1:快速编码,少用Kite谷歌
大多数代码编辑器都具有类似这样的自动填充功能,...使用某种语言(库)文档来表明函数名和参数:
这不难,但如果编辑器可以浏览几年的GitHub数据,并且不仅仅能自动填充函数名称,还能完成整行代码呢?这仅是第一个使用Kite的理由。
原因 1:代码行填充
Kite访问代码库和各个变量、常用的在线参数名称以及文档后,会输出优质的语境建议:
上图示例展示了Kite如何能预测编码者需要使用的变量,即使它们一般被命名为(如b),或更普遍的名字(如x或y)。
Kite创始人兼首席执行官Adam Smith说:“我们在Github 上已经用了50多年的时间来对所有代码进行语义索引,构建统计类型推理,以及深度使用此语义信息的丰富统计模型。”
原因 2:在本地私密运行
最重要的是,它在本地运行,因此可以快速获得提示,离线也能工作,并且代码不会发送到云端。
对于网络情况异常和在闭信源代码库工作的人来说,这一点非常重要。
原因 3:文档编程助手
如果你从来没听过"RTFM"这个词,那可能因为没有在第一代开发者身边工作过。
向高级开发人员讨教是很有必要的,甚至去StackOverflow查找答案之前阅读文档。Kite Copilot让文档变得十分简单,其与编辑器同时运行,实时显示文档中光标掠过的任何对象/函数等。
结果
笔者使用Kite多年,它改进得也越来越好。其拥有超过1,700万美元的投资,不会轻易倒闭,而且它的工具是完全免费的。你只需要给编辑器下载Kite插件,或下载copilot(编码助手),就能安装插件。
秘密武器#2:用Mypy检查代码
编码Python 是动态的,简单解释就是:编码者可以随时将任何变量变为任何数据类型(字符串、整数等)。
# These two variable types aredeclared the exact same way # Python figures out the data type on it s own, dynamically# string var_name = "string here"# integer var_name = 1234
相对的是静态类型的语言,其中它的变量必须有一个特定的数据类型,并且始终遵循它。
# Many languages require the datatype to be declared too# string str var_name = "string here"# integer int var_name = 1234
动态编码的优点/缺点
动态编码的优点是,你可以偷懒,并且能减少乱码。但它缺点很多且不小:
- 通常在开发周期后期会出现错误
- 由于Python不断计算类型,编码效果会降低
- 传递代码更不稳定,因为其他人可能不知道其中的变量是哪些或可能成为哪些数据类型
- 函数会更不稳定,因为它们的输入和输出可以在没有警告的情况下更改数据类型
Python 中的静态键入
打开Mypy,这是一个免费的Python模块,让你能在Python 内部静态编码。发出pip install mypy指令后, 下面就是其使用示例:
# Declaring a function using normaldynamic typing, without mypy def iter_primes(): # code here# Declaring the samefunction with mypy static typing from typing import Iteratordef iter_primes() -> Iterator[int]: # code here
利用mypy 示例,能指定函数返还整数的迭代器。这种简单变化通过强制实施一致输出,使函数更具有预测性。
与仅使用文档不同,其他开发人员只需查看输出的将是什么数据类型,如果不符合该定义,则代码出错。
结果
列出静态类型以帮你减轻将来痛苦的所有方法有难度,但mypy文档具有出色的解答常见问题的能力,优缺点都不少。
如果你在一个把稳定性放在第一位的代码生产库工作,一定要试试myby。
秘密武器#3:用Sonarlint快速查找错误,编写更简单的函数
现在每个编辑器都有某种类型的错误检查或内置的"linter",可以用来查看代码,通常无需运行,并能预测可能存在的错误。这就是静态代码分析。
VS代码中的默认 Python Linter
动态代码分析实际上尝试运行/编译代码的某些部分,以查看其是否正常工作,但它会自动在后台运行。它不是猜测,它事实上知道代码是否会出错,以及确切的错误是什么。
SonarLint是动态代码分析中最好的,有超多优点:
已注释或未命名的代码
对于代码库里满满的输出定义、已注释代码,以及未使用的函数,笔者十分愧疚。但正是如此,才会时刻警醒,留下深刻印象,方便查找。
不执行命令代码
与未命名的代码略有不同,不执行命令代码将会在编码者创建不可能评估时发出预警。这十分有必要,否则会导致进行几个小时的调试,这是笔者最喜欢的预警之一。
示例:
a = Noneif a == None or not a or a: this_will_always_get_called() else: # sonarlint will warn you about thisline never being executed this_will_never_get_called()
安全风险
代码库中的巨大数据库将不断实时更新安全风险,能警告使用者所面临的任何已知漏洞风险。
安全风险问题是小概率事件,基本不可能给我们留下印象。因此,每个人都应该行动起来持续追踪。SonarLint是一个伟大的开端。
认知复杂性
这个话题十分有趣,笔者可以针对它写一篇完整的文章。
简单解释就是,有人创建了一个数学公式,这个公式可以对代码的阅读/理解难易程度进行评分。
它非常有用,还易于理解。每次SonarLint要求编码者"降低认知复杂性"时,它都会对编码者的不规范操作简单解释,比如"无法定义,嵌套异常"。
结果
笔者发现这比基础屏蔽和lint练习更有用,编码者也能编写更为人性化的代码。这就是Pythonic!!
心动不如行动,赶快用起来吧!
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
RISC-V会彻底改变计算吗?
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 微处理器的开放指令集有望重塑计算,并引入新的、更强大的功能。 现代计算机依靠许多元件来提供高速和高性能,但是很少有比一台精简的指令集计算机(通常称为RISC)发挥更大作用的了。尽管指令集体系结构(ISA)具有不同的形状和形式-并且它支持多种系统和设备-但存在一个共同点,与复合指令集计算机(CISC)相比,RISC允许微处理器以更少的每指令周期(CPI)运行。 当然,ISA是计算的核心。加州大学伯克利分校计算机科学教授、ACM A.M.图灵奖获得者戴夫·帕特森(Dave Patterson)说:“这是允许硬件和软件进行通信的基本词汇,他差不多算是创造了这个术语,并开发了早期的RISC计算模型。在过去的几十年里,英特尔和ARM这两大实体基本上控制了ISA。他们的专利微处理器可以从笔记本电脑到云服务器,从智能手机到物联网(IoT)设备的所有设备运行。如今,很难找到没有英特尔或ARM处理器的计算设备。 所有这些都将改变。由Patterson和伯克利大学教授Krste Asanovi'c以及他们的...
- 下一篇
再见 Python,Hello Julia!
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 随着Python的停滞不前,一个新的热门竞争对手崛起了。 如果Julia对你来说仍是个谜,别担心。 不要误会我的意思。Python的流行仍然受到计算机科学家、数据科学家、人工智能专家,以及他们组成的稳固社区的坚定支持。 但是,如果你曾经和这些人一起共进过晚餐,那么你就应该知道他们对于Python的弱点有多少抱怨。从速度缓慢到需要过多的测试,再到尽管进行了先前的测试仍然会产生很多运行时错误 - 这些已经足够让人恼火了。 这就是为什么越来越多的程序员开始采用其他语言的原因,这些语言中最受欢迎的是Julia、Go和Rust。Julia非常适合数学和技术任务,Go非常适合模块化程序,而Rust是系统编程的首选。 由于数据科学家和人工智能专家需要处理许多数学问题,因此Julia成为他们的赢家。即使经过严格的审视,Julia仍然具有Python无法战胜的优势。 Python的禅与Julia的贪婪 当人们创建一种新的编程语言时,他们这样做的目的是希望保留旧语言中的好特性,并修复其坏特性。 从这个意义上...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Linux系统CentOS6、CentOS7手动修改IP地址
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- 2048小游戏-低调大师作品