不知道小伙伴们是否有这样的困惑,当我们回顾自己 6 个月前编写的一些代码时,往往会看的一头雾水,或者是否当我们接手其他人的代码时,

Python 中有许多方法可以帮助我们理解代码的内部工作原理,良好的编程习惯,可以使我们的工作事半功倍!

例如,我们最终可能会得到看起来很像下图中的代码。虽然不是最糟糕的,但是,我们需要扩展一些事情,例如:

  • load_las_file 函数中的 f 和 d 代表什么?
  • 为什么我们要在 clay 函数中检查结果?
  • 这些函数需要什么类型? Floats? DataFrames?

在本文中,我们将着重讨论如何通过文档、提示输入和正确的变量名称来提高应用程序/脚本的可读性的五个基本技巧。

1. Comments

我们可以对我们的代码做的第一件事是为我们的代码添加某些注释,但是却不能过度使用它。注释应该告诉你为什么代码可以工作或者为什么某事以某种方式完成,而不是它是如何工作的。

Python 中的注释通常使用井号 (#) 来完成,并且可以跨越单行或多行。

# Comment using the hashtag# Another comment using the hashtag

对于多行注释,我们也可以使用三个双引号。

"""This is an example ofa multi-line comment"""

在下面的示例中,代码中添加了一些注释,以解释某些代码行背后的工作流程和推理


2. Explicit Typing

Python 语言是动态类型的,这意味着变量类型只会在运行时检查。此外,变量可以在代码执行期间更改类型。

另一方面,静态类型涉及明确说明变量是什么类型,并且在代码执行期间不能更改。

2014 年,PEP 484 引入了类型提示的概念,后来在 Python 3.5 版本中引入,这些允许我们明确说明变量应该是什么类型。

通过添加类型提示,可以显著提高代码的可读性。在下面的例子中,我们可以轻松得到如下信息:

  • 函数需要两个参数
  • 文件名参数应该是字符串类型
  • start_depth 参数应该是 float 类型,默认值为 None
  • 该函数将返回一个 pandas DataFrame 对象

我们可以立即根据类型提示准确判断函数需要什么以及它将返回什么。

3. Docstrings (Documentation Strings)

文档字符串是紧跟在函数或类定义之后的字符串文字,Docstrings 是一个很好的方式来详细解释我们的函数做什么,它需要什么参数,它会引发的任何异常,它会返回什么等等。

此外,如果我们使用 Sphinx 之类的工具为代码创建在线文档,则文档字符串将自动被拾取并转换为适当的文档。

下面的示例显示了一个名为 clay_volume 的函数的文档字符串。

在这里,我们可以指定每个参数是什么,这比基本的类型提示更加详细,我们还可以包含有关函数背后的方法的更多信息,例如学术参考或方程式。


当我们从代码中的其他地方调用函数时,拥有文档字符串也是非常有帮助的。例如,使用 Visual Studio 编辑代码时,可以将鼠标悬停在函数调用上,然后查看该函数的功能及其要求的弹出窗口。


如果使用 Visual Studio Code (VSCode) 来编辑我们的 Python 代码,可以使用像 autoDocstring 这样的扩展插件来简化创建文档字符串的过程。该插件允许我们输入三个双引号并自动填充模板的其余部分,我们只需要关注必须填写的其他详细信息即可。


4. Readable Variable Names

很多时候,当我们编写代码时,不会太在意变量的名称,尤其是当我们急于完成某些功能时。但是如果我们的代码返回一系列名为 x1 或 var123 的变量,那么可能任谁都无法第一眼理解它们所代表的含义。

下面的示例,我们有两个变量 f 和 d。可以通过查看代码的其他部分来猜测这些含义,但这需要一定的时间,尤其是在代码很长的情况下。


如果我们为这些变量分配适当的名称,就能够知道其中一个是由 lasio.read() 调用读取的 data_file,并且很可能是原始数据,data 变量告诉我们这是我们正在使用的实际数据。


5. Avoiding Magic Numbers

魔法数字是代码中的值,它们背后具有很多无法解释的含义,并且可以表示常量。在代码中使用这些可能会导致歧义,尤其是对于那些不熟悉其中使用数字的任何计算的人。

此外,如果我们在多个地方有相同的魔法数字并且需要更新它,我们将不得不更新它的每个实例。然而如果将数字分配给正确命名的变量,则整个过程会容易得多。

在下面的示例中,我们有一个函数计算一个名为 result 的值并将其乘以 0.6。 通过代码我们无法准确的知道该段代码的具体含义


如果我们声明一个变量并将该值分配给它,那么我们就有更好的机会知道它是什么。在这种情况下,它是用于将伽马射线指数转换为粘土体积的粘土与页岩的比率。


总结

通过注释和文档字符串将文档添加到我们的代码中可以大大帮助自己和其他人了解代码在做什么。确实,一开始可能感觉像是一件苦差事,但通过使用工具和定期练习,它可以成为你的第二天性。

快来整理你的代码吧~

好了,这就是今天分享的全部内容,喜欢就点个赞吧~

本文由 mdnice 多平台发布

提高 Python 代码可读性的 5 个基本技巧相关推荐

  1. Python代码编写过程中有哪些重要技巧?

    近几年,转行做Python技术岗的人越来越多,大家对于Python的关注越来越高,尤其是工作后,很多人都想知道Python代码编写过程中有哪些重要技巧?小编告诉大家,在编写Python代码过程中,除了 ...

  2. python代码编写_高质量Python代码编写的5个优化技巧

    如今我使用 Python 已经很长时间了,但当我回顾之前写的一些代码时,有时候会感到很沮丧.例如,最早使用 Python 时,我写了一个名为 Sudoku 的游戏(GitHub地址:https://g ...

  3. (译)用多重赋值和元组解包提高python代码的可读性

    原文链接(侵删): http://treyhunner.com/2018/03/tuple-unpacking-improves-python-code-readability/ 无论我是教pytho ...

  4. 如何提高Python代码的可读性?

    程序的编码风格,指的是一个人在编写程序时表现出来的特点.习惯逻辑思路等. 对于程序员来说,在开发时要重视其编写规范,程序不仅应该能够在机器上正确执行,还应便于调试.维护及阅读. 下面,播妞举例说明一些 ...

  5. 提高 Python 代码的可读性,你需要知道这10个技巧

    Python的可读性和简单性是其广受欢迎的两大原因,本文介绍20个常用的Python技巧来提高代码的可读性,并能帮助你节省大量时间,下面的技巧将在你的日常编码练习中非常实用. 注:文末提供 Pytho ...

  6. python如何提高程序可读性_提高Python的可读性?

    我最近一直很喜欢 Python编程.我来自对C语言编码的强烈热爱的背景,其中一切都可能比它应该更复杂(但至少把头发放在胸前).因此,从C转换到Python以获得不需要大量速度的更复杂的事情,这对于编写 ...

  7. 使用Cython提高python代码执行速度

    2022.2.21更新 python程序执行效率是明显低于c的. 优化python代码的一个思路就是:将python的核心代码(一般是需要多次调用,或核心循环部分)转换成c语言. 不需要将程序重新改写 ...

  8. 为了提高python代码运行速度和进行_一行代码让你的python运行速度提高100倍

    Python用的好,猪也能飞起来.今天,带大家学习如何让Python飞起来的方法,干货满满哦! python一直被病垢运行速度太慢,但是实际上python的执行效率并不慢,慢的是python用的解释器 ...

  9. 提高python代码能力_解决不了bug先放着,这里有40条提升编程技能小妙招

    点击上方 "Python人工智能技术" 关注,星标或者置顶 22点24分准时推送,第一时间送达 来自:公众号 机器之心 | 编辑:真经君 Python人工智能技术(ID:coder ...

最新文章

  1. Linxu终端gcc与gcc -c的区别
  2. python2.7 pip安装htmlreport报错_pytest十五:pytest-html 生成 html 报告
  3. django第三天(路由基础和路由分配)
  4. java中的static关键字总结
  5. kettle插入更新流程
  6. 【php】正则无法截取\反斜杠的解决方法
  7. matlab中欠定方程组超定方程组_《数值天气预报》:球坐标系中的基本方程组
  8. opencore0.6.3_Ubuntu 18.04 源码编译安装 PHP 7.3
  9. python匿名函数调用_python中引用局部变量的匿名函数
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的课程教学辅助系统
  11. 试述计算机控制系统的大致组成,试述工业计算机控制系统的组成及应用
  12. Like Sunday, Like Rain - JavaScript运算符优先级
  13. atitit.面向过程的编程语言异常处理 c语言 asp vbs 的try catch 实现
  14. 跟着王道考研学计算机网络笔记(一):初步了解计算机网络
  15. MySQL外键更新删除设置cascade、set null、restrict、no action的区别
  16. python中开平方如何表示_python平方怎么表示
  17. 11.1 项目风险管理
  18. c++构造函数的定义
  19. android广告页白屏_微信官方朋友圈广告营销技巧
  20. forwardRef的使用

热门文章

  1. Python项目实战 4.1:账号登录
  2. 数据分析笔记--对NBA球员数据的聚类分析(代码)
  3. html实现个人自我介绍(精)
  4. 快手挂小黄车和快手小店有什么区别?如何开通快手小店?
  5. Apache Log4j 远程代码注入漏洞
  6. 电脑显示没有被指定在上运行_win7运行QQ时出现“.dll没有被指定在Windows上运行,或者它包含错误”如何解决...
  7. 计算机多媒体培训总结,多媒体培训心得体会
  8. 基于JMF录制和播放视频源码
  9. Excel基础(01)认识excel
  10. 国外程序员推荐:每个程序员都应读的书