五年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 。
本文插图
秘密武器#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是一个伟大的开端 。
本文插图
图源:unsplash
认知复杂性
这个话题十分有趣 , 笔者可以针对它写一篇完整的文章 。
简单解释就是 , 有人创建了一个数学公式 , 这个公式可以对代码的阅读/理解难易程度进行评分 。
它非常有用 , 还易于理解 。 每次SonarLint要求编码者''降低认知复杂性''时 , 它都会对编码者的不规范操作简单解释 , 比如''无法定义 , 嵌套异常'' 。
结果
笔者发现这比基础屏蔽和lint练习更有用 , 编码者也能编写更为人性化的代码 。 这就是Pythonic!!
推荐阅读
- 语言最红语言Python跌落榜三,Rust最受喜爱!Stack Overflow 2020报告出炉
- CSDN|儿童节教你用 Python 画出童年回忆
- TechWeb.com.cn|美国三大股指周一收高 费城半导体指数逆势下跌
- 手机教授|笔记本用了三五年都不卡,秘诀在哪里?内行告诉你这4条保养知识
- 新智元|机器学习团队常用工具总结,人生苦短,我用Python!
- |618首日,荣耀智慧屏打破京东黑电品类单品首销五年历史纪录
- 马路边老张|国内三大巨头杀入芯片行业,华为将不再孤单
- 工具机器学习团队常用工具总结,人生苦短,我用Python!
- 爱集微APP|芯驰科技首秀三大车用芯片,将如何从市场突围?
- C114通信网|参与中国5G建设!爱立信斩获91个5G合同,已包括中国三大运营商
