五年Python三大秘诀!日常生活不可或缺的秘密武器

栏目: IT技术 · 发布时间: 4年前

内容简介:全文共

五年 <a href='https://www.codercto.com/topics/20097.html'>Python</a> 三大秘诀!日常生活不可或缺的秘密武器

全文共 2136 字,预计学习时长 9 分钟

五年Python三大秘诀!日常生活不可或缺的秘密武器

图源:unsplash

大浪淘沙沉者为金。笔者编写Python代码已经5年多了,经历这么久,工具集没有变大,反而越来越小。工具不在多,好用就行。这三种方法笔者已经坚持使用了很长时间,和其他方法不同的是,使用它们的频率只增不减。你值得拥有!

五年Python三大秘诀!日常生活不可或缺的秘密武器

秘密武器#1:快速编码,少用Kite谷歌

大多数代码编辑器都具有类似这样的自动填充功能, ... 使用某种语言(库)文档来表明函数名和参数:

五年Python三大秘诀!日常生活不可或缺的秘密武器

这不难,但如果编辑器可以浏览几年的GitHub数据,并且不仅仅能自动填充函数名称,还能完成整行代码呢?这仅是第一个使用Kite的理由。

原因 1:代码行填充

Kite访问代码库和各个变量、常用的在线参数名称以及文档后,会输出优质的语境建议:

五年Python三大秘诀!日常生活不可或缺的秘密武器     图源: Kite docs

上图示例展示了Kite如何能预测编码者需要使用的变量,即使它们一般被命名为(如b),或更普遍的名字(如x或y)。

Kite创始人兼首席执行官 Adam Smith 说:“我们在Github 上已经用了50多年的时间来对所有代码进行语义索引,构建统计类型推理,以及深度使用此语义信息的丰富统计模型。”

原因 2:在本地私密运行

最重要的是,它 在本地运行 ,因此可以快速获得提示,离线也能工作,并且代码不会发送到云端。

对于网络情况异常和在闭信源代码库工作的人来说,这一点非常重要。

原因 3:文档编程助手

五年Python三大秘诀!日常生活不可或缺的秘密武器

如果你从来没听过 "RTFM" 这个词,那可能因为没有在第一代开发者身边工作过。

向高级开发人员讨教是很有必要的,甚至去StackOverflow查找答案之前阅读文档。Kite Copilot让文档变得十分简单,其与编辑器同时运行,实时显示文档中光标掠过的任何对象/函数等。

结果

笔者使用Kite多年,它改进得也越来越好。其拥有超过1,700万美元的投资,不会轻易倒闭,而且它的 工具 是完全免费的。你只需要给编辑器下载Kite插件,或下载copilot(编码助手),就能安装插件。

五年Python三大秘诀!日常生活不可或缺的秘密武器

秘密武器#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三大秘诀!日常生活不可或缺的秘密武器

图源:unsplash

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

五年Python三大秘诀!日常生活不可或缺的秘密武器

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

现在每个编辑器都有某种类型的错误检查或内置的"linter",可以用来查看代码,通常无需运行,并能预测可能存在的错误。这就是静态代码分析。

五年Python三大秘诀!日常生活不可或缺的秘密武器

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是一个伟大的开端。

五年Python三大秘诀!日常生活不可或缺的秘密武器

图源:unsplash

认知复杂性

这个话题十分有趣,笔者可以针对它写一篇完整的文章。

简单解释就是,有人创建了一个数学公式,这个公式可以对代码的阅读/理解难易程度进行评分。

它非常有用,还易于理解。每次SonarLint要求编码者"降低认知复杂性"时,它都会对编码者的不规范操作简单解释,比如"无法定义,嵌套异常"。

结果

笔者发现这比基础屏蔽和lint练习更有用,编码者也能编写更为人性化的代码。 这就是Pythonic! !

心动不如行动,赶快用起来吧!

五年Python三大秘诀!日常生活不可或缺的秘密武器

推荐阅读专题

五年Python三大秘诀!日常生活不可或缺的秘密武器

五年Python三大秘诀!日常生活不可或缺的秘密武器

五年Python三大秘诀!日常生活不可或缺的秘密武器

五年Python三大秘诀!日常生活不可或缺的秘密武器

五年Python三大秘诀!日常生活不可或缺的秘密武器

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:王沁欣、余书敏

相关链接:

https://towardsdatascience.com/the-3-secret-weapons-that-changed-my-python-editor-forever-c99f7b2e0084

如转载,请后台留言,遵守转载规范

推荐文章阅读


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

未来简史

未来简史

[以色列] 尤瓦尔·赫拉利 / 林俊宏 / 中信出版集团 / 2017-2 / 68.00元

进入21世纪后,曾经长期威胁人类生存、发展的瘟疫、饥荒和战争已经被攻克,智人面临着新的待办议题:永生不老、幸福快乐和成为具有“神性”的人类。在解决这些新问题的过程中,科学技术的发展将颠覆我们很多当下认为无需佐证的“常识”,比如人文主义所推崇的自由意志将面临严峻挑战,机器将会代替人类做出更明智的选择。 更重要的,当以大数据、人工智能为代表的科学技术发展的日益成熟,人类将面临着从进化到智人以来z......一起来看看 《未来简史》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具